Jump to content
  • 0

pomoc Leveling systém


DaNeX

Dotaz

Stáhnul sem si leveling systém a někde v něm jsou dvě chybičky které nedokážu rozpoznat.

 

1,  Při příkazu /givexp se exp započítá (pouze do scriptfiles) ale ve hře v textdrawu je furt 0.

 

     Když zadám příkaz /givexp s 101 xp což je jeden level ,tak se přidá level. ale při /givelvl 1  zase nic .. 

 

2,   Při odpojení ze serveru a následném připojení se mě v klidu načte level/xp který sem měl.

      I ten který nešel kvůli playerupdate vidět dřive.         

      

      Bohužel při restartování serveru se všem  hodí vše na nulu.

 

Prvně jsem si myslel že se to nějak blokuje z  módem ale po přezkoušení na jiných to dělá furt..

 

Přikládám celý script jelikož je to freescript.

 

http://www.solidfiles.com/d/af208d6268/Ranks.pwn


:)

Edited by DaNeX
Link to comment
Share on other sites

12 odpovědí na tuto otázku

Recommended Posts

  • 0

Zřejmě ten "stupidní idiot", kterej klikne na ten největší odkaz "Download" a nainstaluje si nějakej malware.

CMD:givexp(playerid, params[])
{
	new ammount, ID, TargetName[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME], str[128];
	if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, -1, "ERROR: You need to be an admin to use this command!");
 	if(sscanf(params, "ui", ID, ammount)) return SendClientMessage(playerid, -1, "USAGE: /givexp <playerid> <1-99>");
    if(ammount < 1 || ammount > 99) return SendClientMessage(playerid, -1, "ERROR: Invalid XP ammount. Number must be between 1 and 99.");
    if(!IsPlayerConnected(ID))return SendClientMessage(playerid,-1,"ERROR: Player is not connected.");
    {
        GetPlayerName(ID,TargetName,MAX_PLAYER_NAME);
        GetPlayerName(playerid,PlayerName, MAX_PLAYER_NAME);
		format(str, sizeof(str), "%s Has given you %d XP", PlayerName, ammount);
        SendClientMessage(ID, -1, str);
		format(str, sizeof(str), "You have given you %s %d XP", TargetName, ammount);
        SendClientMessage(playerid, -1, str);
		rInfo[ID][xp] += ammount;
		new string[125];
	    format(string,sizeof string,"~g~XP ~y~%d~n~~g~Level ~y~%d~n~~g~Prestige ~y~%d",rInfo[ID][xp], rInfo[ID][level], rInfo[ID][prestige]);
		PlayerTextDrawSetString(ID, RanksTD, string);
	}
	return 1;
}
Link to comment
Share on other sites

  • 0

Dobrá práce Matess.

 

Teď jen vyřešit druhou chybičku kde slýhává loading systém.

Po restartu serveru jsou hodnoty ve scriptfiles jaké byli /Xp/lvl ale po připojení na server se to opět vynuluje vše.

 

Takže to bude něco z načtením dat. Tak jestli někdo zkušenější se může na to juknout :)

Link to comment
Share on other sites

  • 0

Pokud jsi na serveru a dáš reset, tak se můžeš jednoduše stát, že se tvé hodnoty vynulujou dřív než uložej a tudíž se přepíšou na nulu. Kdyby to byl GM, tak to asi funguje, ale nevím s FS. Zkus něco jako:

public OnFilterScriptExit()
{
	for(new i;i<100;i++)
	{
		if(IsPlayerConnected(i))
		{
	    new INI:file = INI_Open(Path(i));
	 	INI_SetTag(file,"Player Levels");
	    INI_WriteInt(file,"XP",rInfo[i][xp]);
	    INI_WriteInt(file,"Level",rInfo[i][level]);
	    INI_WriteInt(file,"Prestige",rInfo[i][prestige]);
	    INI_Close(file);
	    }
    }
}
Link to comment
Share on other sites

  • 0

Nene ten reset mě hodnoty na nulu nedá. Na nulu mě je dá spawn nebo connect ( jinak po restartu serveru jsou hodnoty v scriptfiles uložené v cajku) jen mají problém načíst při tom connectu / spawnu


:(

Edited by DaNeX
Link to comment
Share on other sites

  • 0

skús dať do onplayerconnect

 

INI_Int("XP",rInfo[playerid][xp]);
INI_Int("Level",rInfo[playerid][level]);
INI_Int("Prestige",rInfo[playerid][prestige]);
 
(To načítavanie hodnôt čo je tam použité je nad moje chápanie... )
Edited by Quiter
Link to comment
Share on other sites

  • 0

Načitání sem ještě v onplayerconnect takhle neviděl. Vůbec nevím jak to tam zapsat .. musel bys mě to napsat celé ,co zapsat do toho onplayerconnectu :d

 

Zatím to mám ve vlastním publicu nahoře na přiložené fotografii dole.

 

http://ctrlv.cz/mqC4


PS: napsal sem chybu..

 

Načítání funguje při odpojení a připojení serveru. Jen nefunguje po restartování serveru a následnem connectu/spawnu

Edited by DaNeX
Link to comment
Share on other sites

  • 0

public OnPlayerConnect(playerid)
{
INI_Int("XP",rInfo[playerid][xp]);
INI_Int("Level",rInfo[playerid][level]);
INI_Int("Prestige",rInfo[playerid][prestige]);
// tvoje kódy v tomto publicu
return true;
}
Link to comment
Share on other sites

  • 0

.


Tak už sem si opatřil jiný. Tenhle mě žere jenom 4mb ram a 1/2% cpu.

Tak díky za to ,že sem se měl kde jít vyplakat při nedaření :)) :d

Edited by DaNeX
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...