GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: xSkillZ7x - 2012. április 28. - 18:31:20

Cím: Szerver gond
Írta: xSkillZ7x - 2012. április 28. - 18:31:20
Hello.
egy uj zombie modot csinalok.nincs is semmi gond vele.Bekapcsolom a hazi szerveremet,be lepek hogy teszteljem a dini-t,mert meg csinaltam hogy mentse el a zombie lvl-t meg az ammo packet.Ha ki lepek es meg nezem a file-t le menti.Eddig nincs semmi gond.Vissza lepek a szerverre,es irja hogy connecting to server ...bla bla bla.Utana irja hogy Joining to the game vagy nem tudom,es nem jon be semmi.ugyanott mutatja a tengerpartot de nem lep be a szerverre.Ha ujra inditom a szervert,azaz ki x elem utana vissza be kapcsolom,majd be lepek a szerverre ismet megy minden rendesen,viszont ha kikapcsolas nelkul ujra lepek ismet nem enged be.Mi lehet a gond?Ha mas moddal probalom akkor ez nem fordul elo,de ha az uj zombies moddal akkor ismet nem megy.Kerlek segitsetek
 

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
#include <dini>
new file[MAX_PLAYERS][128], name[24], szint[MAX_PLAYERS];
#define zombie 10
#define human 11
#define humanskin 107
#define zombieskin 60
new getplayer, zmstart, zombieteamcounter, humanteamcounter, ammopack[MAX_PLAYERS];
forward update(playerid);
forward infect(playerid);
new Float:damage[MAX_PLAYERS];
 
main()
{
print(\"\\n----------------------------------\");
print(\" Zombie Mod with EXP\");
print(\"----------------------------------\\n\");
}
 
public OnGameModeInit()
{
SetGameModeText(\"Blank Script\");
SetTimer(\"update\", 2000, 1); //update timer
AddPlayerClass(0,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
getplayer++;
SetPlayerTeam(playerid, human);
humanteamcounter++;
ammopack[playerid] = 0;
GetPlayerName(playerid,name,24);
    format(file[playerid],128,\"zmstats/%s.ini\",name);
    if(!dini_Exists(file[playerid])) return dini_Create(file[playerid]);
    szint[playerid] = dini_Int(file[playerid],\"Szint\");
ammopack[playerid] = dini_Int(file[playerid],\"AmmoPack\");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    GetPlayerName(playerid,name,24); //lekérdezzük, majd elmentjük egy változóban a játékos nevét
    format(file[playerid],128,\"zmstats/%s.ini\",name); //megformázzuk a fájlnak a nevét
    dini_IntSet(file[playerid],\"Szint\",szint[playerid]); //átállítjuk a fájlban a szint értékét a játékos jelenlegi szintjére, majd késöbb ezt olvastatjuk be.
    dini_IntSet(file[playerid],\"AmmoPack\",ammopack[playerid]);
getplayer--;
if(GetPlayerTeam(playerid) == zombie) {
zombieteamcounter--;
} else if(GetPlayerTeam(playerid) == human) {
humanteamcounter--;
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(GetPlayerTeam(playerid) == zombie) {
zombieteamcounter--;
} else if(GetPlayerTeam(playerid) == human) {
humanteamcounter--;
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
ammopack[killerid]++;
TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, killerid);
    if(GetPlayerTeam(playerid) == zombie) {
zombieteamcounter--;
} else if(GetPlayerTeam(playerid) == human) {
humanteamcounter--;
}
return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/givemelevel\", cmdtext, true, 10) == 0)// ez scak egy teszt hogy kiprobaljam mukodik e a mentes
{
szint[playerid]++;
szint[playerid]++;
return 1;
}
return 0;
}
 
 
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
 
 
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
 

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
 
public OnPlayerUpdate(playerid)
{
return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public update(playerid)
{
   if(getplayer > 0) {
   zmstart = 1;
   } else if(getplayer == 0) {
   zmstart = 0;
   
   
   return 1;
  }
   if(zmstart == 1) {
   SetTimer(\"infect\", 8000, 0);
   return 1;
   }
   if(GetPlayerTeam(playerid) == zombie) {
   ResetPlayerWeapons(playerid);
   }
   SetPlayerScore(playerid, ammopack[playerid]);
   if(humanteamcounter == 0) {
   zmstart = 0;
   } else if(zombieteamcounter == 0) {
   zmstart = 0;
   }
   if(zmstart == 0) {
   SpawnPlayer(playerid);
   }
   if(GetPlayerTeam(playerid) == human) {
   SetPlayerSkin(playerid, humanskin);
   } else if(GetPlayerTeam(playerid) == zombie) {
   SetPlayerSkin(playerid, zombieskin);
   }
   return 1;
}
 
public infect()
{
     new rand = -1;
     while(!IsPlayerConnected(rand)) rand = random(MAX_PLAYERS);
     SetPlayerTeam(rand, zombie);
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if(GetPlayerTeam(issuerid) == human) {
    damage[issuerid] += amount;
    if(damage[issuerid] >= 300) {
ammopack[issuerid]++;
    damage[issuerid] = 0;//lenullázzuk,hogy újra el tudja érni,persze,csak ha kell
    }
    return 1;
    }
    if(GetPlayerTeam(issuerid) == zombie)
    {
        humanteamcounter--;
        zombieteamcounter++;
        SetPlayerTeam(playerid, zombie);
        ammopack[issuerid]++;
        if(GetPlayerWeapon(issuerid) != 0) {
        SetPlayerHealth(issuerid, 0);
        }
    }
   
    return 1;
}
 
 
 

 
A mod meg nincs kesz szoval meg sok dolgot kell csinaljak,viszont addig nem folytathatom ameddig nem mukodik rendesen :S
Cím: Szerver gond
Írta: Rexii - 2012. április 28. - 18:54:40
Szerintem próbáld meg,hogy elõször is teszel bele még
 
public OnFilterScriptInit()

 
valamint
 
public OnFilterScriptExit()

 
-et
Aztán írd a fejleményeket!
Cím: Szerver gond
Írta: TengeriMalac - 2012. április 28. - 19:17:41
#include <a_samp>
#include <dini>
#define zombie 10
#define human 11
#define humanskin 107
#define zombieskin 60
#undef  MAX_PLAYERS
#define MAX_PLAYERS 20    // ezt majd állítsd át annyira, ahány slotos a szervered.
new getplayer, zmstart, zombieteamcounter, humanteamcounter, ammopack[MAX_PLAYERS];
new file[128], name[24], szint[MAX_PLAYERS];
new Float:damage[MAX_PLAYERS];
forward update(playerid);
forward infect(playerid);
main()
{
print(\"\\n----------------------------------\");
print(\" Zombie Mod with EXP\");
print(\"----------------------------------\\n\");
}
public OnGameModeInit()
{
SetGameModeText(\"Blank Script\");
SetTimer(\"update\", 2000, 1);
AddPlayerClass(0,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
getplayer++;
SetPlayerTeam(playerid, human);
humanteamcounter++;
ammopack[playerid] = 0;
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(file, 128, \"zmstats/%s.ini\",name);
    if(!dini_Exists(file)) {
dini_Create(file);
dini_IntSet(file, \"Szint\", 0);
dini_IntSet(file, \"AmmoPack\", 0);
} else if(dini_Exists(file)) {
       szint[playerid] = dini_Int(file, \"Szint\");
ammopack[playerid] = dini_Int(file, \"AmmoPack\");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    GetPlayerName(playerid, name, MAX_PLAYER_NAME); //lekérdezzük, majd elmentjük egy változóban a játékos nevét
    format(file, 128, \"zmstats/%s.ini\", name); //megformázzuk a fájlnak a nevét
    dini_IntSet(file, \"Szint\", szint[playerid]); //átállítjuk a fájlban a szint értékét a játékos jelenlegi szintjére, majd késöbb ezt olvastatjuk be.
    dini_IntSet(file, \"AmmoPack\", ammopack[playerid]);
getplayer--;
if(GetPlayerTeam(playerid) == zombie) zombieteamcounter--;
else if(GetPlayerTeam(playerid) == human) humanteamcounter--;
return 1;
}
public OnPlayerSpawn(playerid)
{
if(GetPlayerTeam(playerid) == zombie) zombieteamcounter--;
else if(GetPlayerTeam(playerid) == human) humanteamcounter--;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
ammopack[killerid]++;
TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, killerid);
   
    if(GetPlayerTeam(playerid) == zombie) zombieteamcounter--;
else if(GetPlayerTeam(playerid) == human) humanteamcounter--;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/givemelevel\", cmdtext, true, 10) == 0)
{
szint[playerid] += 2;
return 1;
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public update()
{
if(getplayer > 0) zmstart = 1;
else if(getplayer == 0) zmstart = 0;
if(humanteamcounter == 0) zmstart = 0;
else if(zombieteamcounter == 0) zmstart = 0;
if(zmstart == 1) SetTimer(\"infect\", 8000, 0);
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) {
if(GetPlayerTeam(playerid) == zombie) ResetPlayerWeapons(playerid);
SetPlayerScore(playerid, ammopack[playerid]);
if(zmstart == 0) SpawnPlayer(playerid);
if(GetPlayerTeam(playerid) == human && GetPlayerSkin(playerid) != humanskin) SetPlayerSkin(playerid, humanskin);
else if(GetPlayerTeam(playerid) == zombie && GetPlayerSkin(playerid) != zombieskin) SetPlayerSkin(playerid, zombieskin);
}
return 1;
}
public infect()
{
     new rand = random(MAX_PLAYERS);
     if(!IsPlayerConnected(rand)) return infect();
     SetPlayerTeam(rand, zombie);
     return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if(GetPlayerTeam(issuerid) == human) {
       damage[issuerid] += amount;
       if(damage[issuerid] >= 300) {
   ammopack[issuerid]++;
          damage[issuerid] = 0;
       }
    }
    if(GetPlayerTeam(issuerid) == zombie)
    {
        humanteamcounter--;
        zombieteamcounter++;
        SetPlayerTeam(playerid, zombie);
        ammopack[issuerid]++;
        if(GetPlayerWeapon(issuerid) != 0) {
           SetPlayerHealth(issuerid, 0);
        }
    }
    return 1;
}

 
Nekem így mûködik..
Elég sok hiba van benne, és elég alap, de indulásnak megfelel  ;D
Cím: Szerver gond
Írta: xSkillZ7x - 2012. április 28. - 19:39:42
Nekem nem szamit hogy alap,viszont mukodjon xD.Nekem jo.Am mondtam hogy meg sok hiba van benne es meg messze nincs keszen szval xD
Kossz
Am itt van egy hiba.Mi lehet a gond?
 

D:\\sampserver\\gamemodes\\SkillZZMXPv2.pwn(168) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
1 Warning.

 
Viszont ennek ellenere at alakitja amx re
Most mar mukodik,viszont meg mondanad hogy mi volt a gond?
Cím: Szerver gond
Írta: TengeriMalac - 2012. április 28. - 19:57:40
Ezt nem tudtam kitalálni. :/
Cím: Szerver gond
Írta: xSkillZ7x - 2012. április 28. - 20:00:06
Am mikor csinaltam nem teszteltem egyaltalan es faradt is voltam nem nagyon tudtam oda figyelni.Latom sok hiba van benne meg sok buggos minden.De most meg csianlok mindent rendesen.Kossz a segitseget