Jump to content
  • 0

pomoc FS Rank/Hodnosti


Guest Thomas.

Dotaz

Zdravím chtěl bych jsem se zeptat .jestli je možné někde najit script rank či hodnosti do modu street life nic nemohu najit a ve street life to právěže nevím jak udělat .aby to šlo mam tu max Trestne Body co jsem kdysy .ale nevim jak je přemenit prostě aby šlo do toho psát normalně názvy ne čisla nevím co tam přesně upravit aby to šlo ,posilám vám tu script ?

   	
enum PLAYER_INFO
{
Tbod,


forward TbodT(playerid, tbod);

public TbodT(playerid, tbod)
{
    if(IsPlayerConnected(playerid))
    {
        Player[playerid][Tbod] += tbod;
    }
    return 1;
}


onplayerdisconnect
dini_IntSet(way,"Tbod", Player[playerid][Tbod]);


onplayercommand text
dcmd(tbod,4, cmdtext);

ondialogreposnse v dialogu register
dini_IntSet(way,"Tbod",0);

v dialogu login					
Player[playerid][Tbod] = dini_Int(way,"Tbod");


dcmd_tbod(playerid, params[])
{
	if(IsPlayerConnected(playerid))
	{
		new id = strval(params);

		if(Player[playerid][Team]!=11) return SendClientMessage(playerid,COLOR_WHITE,"[POLICIE]: Nejsi člen Policie !");
		else if(!strlen(params) || !strlen(params[chrfind(' ',params)+1])) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /tbod [ ID ] [ BOD ]");
		else if(strval(params[chrfind(' ',params)+1])>13) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Maximálna počet trestných bodu co můžes dát je 13!");
		else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
		else
		{
	         new Name[26];
	         new Name2[26];
	         GetPlayerName(playerid,Name,26);
	         GetPlayerName(id,Name2,26);
	         new string[128];
	         new string2[128];
	         format(string, 128, "Dal si hráčovi %s trestné body počet : %d!",Name2,strval(params[chrfind(' ',params)+1]));
	         SendClientMessage(playerid,COLOR_ADMIN,string);
	         format(string2, 128, "Policajt %s ti dal trestné body počet : %d !",Name,strval(params[chrfind(' ',params)+1]));
	         SendClientMessage(id,COLOR_BLUE,string2);
	         TbodT (id,strval(params[chrfind(' ',params)+1]));
		}
	}
    return 1;
}
Edited by Thomas.
Link to comment
Share on other sites

Recommended Posts

  • 0

Nevím, zda jsem tě pochopil, opravdu píšeš nějak zmateně. Ale předpokládám, že nevíš, jak vytvořit proměnnou  dat. typu string. Vytváří se úplně stejně jako int, akorát musíš do hranatých závorek zapsat délku řetězce (aneb, jak bude text dlouhý).. Hodnotu do ní můžeš nahrát standartě pomocí = a "" , ale používá se spíše formát, už jen kvůli tomu, že do stringu můžeš vypsat hodnotu z dalších proměnných.

Ukázka:

new text[32]; //string o velikosti 32 znaků
new cislo = 15; //int s hodnotou 15

//formátování stringu

string = "Ahoj, jak se máš?"; //zde nemůžeš vypsat proměnné
format(string, sizeof(text), "Ahoj, je tvé oblíbené číslo %d?", cislo); //zde můžeš vypsat proměnnou
//sizeof ti zjistí délku daného řetězce, můžeš jí tam ovšem zadat:
format(string, 32, "Ahoj, je tvé oblíbené číslo %d?", cislo);

Doufám, že jsem ti vysvětlil, co jsi chtěl... :d Každopádně příště si vyjádři trochu smysluplněji... :d;) 

 

Jinak obecně platí, že čím menší délku řetězce dáš do hran. závorek, tím více paměti ušetříš (takhle při jedné proměnné je to asi jedno, ale když toho máš potom plný mód :d). jde ovšem o to, jak dlouhý řetězec, tam chceš mít, ale je třeba blbost vyvářet pro nick hráče řetězec s délkou třeba 128 znaků, když max je 24 znaků. 

Link to comment
Share on other sites

  • 0

já jsem chtel jestli z trestnych bodu udělat hodnosti prostě že budu moc psat názvy hodnosti ne čisla poslal jsem tu i script co jsem udělal nevím co tam změnit ale neco se měni v dini aby šlo do toho psát názvy ne čisla

Link to comment
Share on other sites

  • 0

Zrovna si nejsem jistý jestli je to dobře, ale jestli chceš místo číšel ukládat název tak akorát stačí v sscanf změnít místo čísel ("i") na text ("s") né? Aspoň u mého Gm se v tom vyznám ale u tebe vůbec....

Link to comment
Share on other sites

  • 0

Tady jsem něco napsal (poupravil, tvůj kód), jestli ti něco nepůjde, tak sem napiš...

 

 

enum PLAYER_INFO
{
	Hodnost[26+1]
};

//OnPlayerDisconnect
dini_Set(way,"Hodnost", Player[playerid][Hodnost]);


//OnPlayerCommandText
dcmd(seth,4, cmdtext);

//OnDialogResponse - register
dini_Set(way,"Hodnost","");

//v dialogu login
format(PlayerInfo[playerid][Hodnost], 26, dini_Get(way, "Hodnost"));

//OnPlayerText
public OnPlayerText(playerid,text[])
{
	new
		string[144],
		Name[24+1];

	GetPlayerName(playerid,Name,sizeof(Name));
	if(!Player[playerid][Hodnost])//pokud je string prázdný...
	{
	format(string,sizeof(string),"%s (%d): %s",Name,playerid,text);
	}
	else
	{ //pokud není
 	format(string,sizeof(string),"[%s] %s (%d): %s",PlayerInfo[playerid][Hodnost],Name,playerid,text);
 	}
	SendClientMessageToAll(GetPlayerColor(playerid),string);//barvu si třeba nastav, jak chceš 
	return 0;
}


//příkaz
dcmd_seth(playerid, params[])
{
	if(IsPlayerConnected(playerid))
	{
		new id = strval(params);

		//podmínka pro admina
		else if(!strlen(params) || !strlen(params[chrfind(' ',params)+1])) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /seth [ ID ] [ Hodnost ]");
		else if(strlen(params[chrfind(' ',params)+1])> 26) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Maximální počet znaků pro hodnost je 26.");
		else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
                //ještě podmínka NPC třeba 
		else
		{
		  	new
			  	Name[24+1],
				Name2[24+1],
				string[128];//stačí vytvořit jednu proměnnou, nahrát hodnotu, vypsat a pak přepsat hodnotu a znovu vypsat
				
		  	GetPlayerName(playerid,Name,sizeof(Name));
		  	GetPlayerName(id,Name2,sizeof(Name2));
			format(string, 128, "Nastavil jsi hráčovi %s hodnost na: %s!",Name2,params[chrfind(' ',params)+1));
		   	SendClientMessage(playerid,COLOR_ADMIN,string);
		   	format(string, 128, "Administrátor %s ti nastavil hodnost na : %s !",Name,params[chrfind(' ',params)+1]);
		   	SendClientMessage(id,COLOR_BLUE,string);
		   	format(PlayerInfo[playerid][Hodnost], 26, params[chrfind(' ',params)+1] );
		}
	}
    return 1;
} 

 

 


Zrovna si nejsem jistý jestli je to dobře, ale jestli chceš místo číšel ukládat název tak akorát stačí v sscanf změnít místo čísel ("i") na text ("s") né? Aspoň u mého Gm se v tom vyznám ale u tebe vůbec....

 

sscanf nemá s ukládáním nic společného je to pouze zjednodušení na kontrolování správnosti zadaných parametrů, dřív jsi musel hledat mezery jako třeba zde a to je dost nepřehledné a zbytečně složité... Jinak máš ale pravdu i na int a s na string, pak jsou ještě další možnosti, ale od toho tu je wiki... :d

 

jinak na ukládání stringu v dini se používá dini_Set() a na načítání stringu Dini_Get() (samozřejmě přes format, ne jako dini_Int()), jinak samozřejmě doporučují jiný systém třeba DOF2 je dost podobný dini, ale rychlejší, ovšem psal jsi, že je to ze Street Life, takže pokud zbytek módu bude v dini, tak tohle tomu nepomůže :d

Link to comment
Share on other sites

  • 0

v tom dialogu login se objevila chybička :                     format(PlayerInfo[playerid][Hodnost], 26, dini_Get(way, "Hodnost"));

 

 

C:\Documents and Settings\Owner\Plocha\Nová složka/test.pwn(10052) : error 017: undefined symbol "PlayerInfo"
C:\Documents and Settings\Owner\Plocha\Nová složka/test.pwn(10052) : warning 215: expression has no effect
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(10052) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(10052) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(10052) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase

Edited by Thomas.
Link to comment
Share on other sites

  • 0

Ukaž tvůj enum PlayerInfo, měl by vypadat nějak takto:

enum PLAYER_INFO
{
	Hodnost[26+1]
};

new PlayerInfo[MAX_PLAYERS][PLAYER_INFO];

//Edit:

Aha, ty máš pouze "Player" a ne "PlayerInfo", takže to změn na:

format(Player[playerid][Hodnost], 26, dini_Get(way, "Hodnost"));

stejně tak i ostatní, kde je PlayerInfo...

Link to comment
Share on other sites

  • 0

jsem to změnil na player u dialog response v loginu  misto playerinfo a hazi mi to tohle :

 

 

C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26155) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26155) : warning 215: expression has no effect
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26155) : error 001: expected token: ";", but found "if"
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26168) : error 001: expected token: "]", but found ")"
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26168) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26168) : warning 215: expression has no effect
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26172) : error 017: undefined symbol "PlayerInfo"
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26172) : warning 215: expression has no effect
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26172) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26172) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26172) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase


8 Errors.

Link to comment
Share on other sites

  • 0

dcmd_seth(playerid, params[])
{
    if(IsPlayerConnected(playerid))
    {
        new id = strval(params);

        //podmínka pro admina
        else if(!strlen(params) || !strlen(params[chrfind(' ',params)+1])) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /seth [ ID ] [ Hodnost ]");
        else if(strlen(params[chrfind(' ',params)+1])> 26) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Maximální počet znaků pro hodnost je 26.");
        else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
                //ještě podmínka NPC třeba ;)
        else
        {
              new
                  Name[24+1],
                Name2[24+1],
                string[128];//stačí vytvořit jednu proměnnou, nahrát hodnotu, vypsat a pak přepsat hodnotu a znovu vypsat

              GetPlayerName(playerid,Name,sizeof(Name));
              GetPlayerName(id,Name2,sizeof(Name2));
            format(string, 128, "Nastavil jsi hráčovi %s hodnost na: %s!",Name2,params[chrfind(' ',params)+1));
               SendClientMessage(playerid,COLOR_ADMIN,string);
               format(string, 128, "Administrátor %s ti nastavil hodnost na : %s !",Name,params[chrfind(' ',params)+1]);
               SendClientMessage(id,COLOR_BLUE,string);
               format(PlayerInfo[playerid][Hodnost], 26, params[chrfind(' ',params)+1] );
        }
    }
    return 1;
}

Link to comment
Share on other sites

  • 0


dcmd_seth(playerid, params[])
{
    if(IsPlayerConnected(playerid))
    {
        new id = strval(params);

        //podmínka pro admina
        else if(!strlen(params) || !strlen(params[chrfind(' ',params)+1])) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /seth [ ID ] [ Hodnost ]");
        else if(strlen(params[chrfind(' ',params)+1])> 26) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Maximální počet znaků pro hodnost je 26.");
        else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
                //ještě podmínka NPC třeba
        else
        {
              new
                  Name[24+1],
                Name2[24+1],
                string[128];//stačí vytvořit jednu proměnnou, nahrát hodnotu, vypsat a pak přepsat hodnotu a znovu vypsat

              GetPlayerName(playerid,Name,sizeof(Name));
              GetPlayerName(id,Name2,sizeof(Name2));
            format(string, 128, "Nastavil jsi hráčovi %s hodnost na: %s!",Name2,params[chrfind(' ',params)+1));
               SendClientMessage(playerid,COLOR_ADMIN,string);
               format(string, 128, "Administrátor %s ti nastavil hodnost na : %s !",Name,params[chrfind(' ',params)+1]);
               SendClientMessage(id,COLOR_BLUE,string);
               format(Player[playerid][Hodnost], 26, params[chrfind(' ',params)+1] );//Tady jsi měl PlayerInfo a ne Player, jinde chybu nevidím, když tak napiš jaký řádek to je
        }
    }
    return 1;
}

Link to comment
Share on other sites

  • 0

C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26168) : error 001: expected token: "]", but found ")"
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26168) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\test.pwn(26168) : warning 215: expression has no effect

 

kod :               format(string, 128, "Nastavil jsi hráčovi %s hodnost na: %s!",Name2,params[chrfind(' ',params)+1));

Link to comment
Share on other sites

  • 0

zase error na tom řádku C:\Documents and Settings\Owner\Plocha\Nová složka\izsgta.pwn(26168) : error 001: expected token: "]", but found ")"
C:\Documents and Settings\Owner\Plocha\Nová složka\izsgta.pwn(26168) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\izsgta.pwn(26168) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Owner\Plocha\Nová složka\izsgta.pwn(26168) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase


4 Errors.

 

Link to comment
Share on other sites

  • 0

to nejde vůbec misto textu mi to zobrazi čislo v přikazu  jsem zkoušel a misto textu test mi to napiše 84

 

dcmd_hodnost(playerid, params[])
{
    #pragma unused params
    if(IsPlayerConnected(playerid))
    {
        new Text2[256];
        format(Text2, sizeof(Text2), "{ff0000}{ffffff} tEST: %d", Player[playerid][Hodnost]);
        ShowPlayerDialog(playerid,Dialog_NoEffect,DIALOG_STYLE_MSGBOX,"Test",Text2,"OK","Cancel");
    }
    return 1;
}

Link to comment
Share on other sites

  • 0
  • Administrátor

to nejde vůbec misto textu mi to zobrazi čislo v přikazu  jsem zkoušel a misto textu test mi to napiše 84

 

dcmd_hodnost(playerid, params[])

{

    #pragma unused params

    if(IsPlayerConnected(playerid))

    {

        new Text2[256];

        format(Text2, sizeof(Text2), "{ff0000}{ffffff} tEST: %d", Player[playerid][Hodnost]);

        ShowPlayerDialog(playerid,Dialog_NoEffect,DIALOG_STYLE_MSGBOX,"Test",Text2,"OK","Cancel");

    }

    return 1;

}

 

 

Tomáš prosím tě pro příště dávej jakýkoliv kód i výpisy errorů do bbcodu code je symbol v menu editoru:

)

Link to comment
Share on other sites

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