Jump to content

script SAMP SimpleHome :)


MiNiX

Recommended Posts

Ahoj :). Určitě jste viděli na minecraft serverech plugin SimpleHome, IHome atd.... V Minecraftu to funguje tak že napíšete příkaz /sethome a ono vám to uloží souřadnici na které stojíte. Potom napíšete /home a ono vás to na tu souřadnici warpne. A když umřete tak vás to taky warpne na tu souřadnici . Napadlo mně proč nemít takové příkazy i v SAMPU :d. Udělal jsem script. Dám ho sem do kódu :)

public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmdtext, "/sethome", true ) == 0)//Timto příkazem se domov nastavuje 
{
GetPlayerName(playerid, jmeno, 64);
new souborname[128];
format(souborname, sizeof(souborname), "HOME %s.txt", jmeno);
if(fexist(souborname))return SendClientMessage(playerid, COLOR_RED, "Už máš nastavený jeden domov, pro odstranění napis /removehome");
{
if(GetPlayerMoney(playerid) < 50000) return SendClientMessage(playerid, COLOR_WHITE, "Nemáš {FF0000}50000$");//Klidne si sem dejte částku jakou chcete 
{
new output[256];
new sprava[256];
new File:soubor;
new Float:x;
new Float:y;
new Float:z;
GetPlayerPos(playerid,x,y,z);
format(output, sizeof(output), "%f, %f, %f", x, y, z);
format(sprava, sizeof(sprava), "{FFFFFF}Domov budeš mít na souřadnicích {FF0000}X{FFFFFF}: %f {FF0000}Y{FFFFFF}: %f {FF0000}Z{FFFFFF}: %f", x, y, z);
SendClientMessage(playerid, COLOR_WHITE, sprava);
soubor = fopen(souborname, io_write);
fwrite(soubor, output);
fclose(soubor);
SendClientMessage(playerid, COLOR_GREEN, "Nastavil sis domov");
return 1;
}
}
}
if(strcmp(cmdtext, "/removehome", true ) == 0)//Tímto příkazem se domov maže  (To je logický)
{
new souborname[128];
GetPlayerName(playerid, jmeno, 64);
format(souborname, sizeof(souborname), "HOME %s.txt", jmeno);
if(!fexist(souborname))return SendClientMessage(playerid, COLOR_RED, "Nemůžeš si vymazat domov když ho nemáš, pro vytvoření napiš /sethome");
{
SendClientMessage(playerid, COLOR_GREEN, "Vymazal sis domov");
fremove(souborname);
return 1;
}
}
if(strcmp(cmdtext, "/home", true ) == 0)//Tímto příkazem se domu warpneš 
{
GetPlayerName(playerid, jmeno, 64);
new souborname[128];
format(souborname, sizeof(souborname), "HOME %s.txt", jmeno);
if(!fexist(souborname))return SendClientMessage(playerid, COLOR_RED, "Nemáš ještě udělaný domov takže se k němu nemužeš spawnout");
{
new File:soubor;
soubor = fopen(souborname,io_read);
if(soubor)
{
new Data[128];
fread(soubor,Data);
new Float:x = floatstr(Data);
new pos = chrfind(',',Data)+1;
new Float:y = floatstr(Data[pos]);
pos = chrfind(',',Data,pos)+1;
new Float:z = floatstr(Data[pos]);
SendClientMessage(playerid,COLOR_GREEN,"Spawnul ses k domovu");
SetPlayerPos(playerid,x,y,z);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
fclose(soubor);
return 1;
}
}
}

public OnPlayerSpawn(playerid)

GetPlayerName(playerid, jmeno, 64);
new souborname[128];
format(souborname, sizeof(souborname), "HOME %s.txt", jmeno);
if(fexist(souborname))
{
new File:soubor;
soubor = fopen(souborname,io_read);
if(soubor)
{
new Data[128];
fread(soubor,Data);
new Float:x = floatstr(Data);
new pos = chrfind(',',Data)+1;
new Float:y = floatstr(Data[pos]);
pos = chrfind(',',Data,pos)+1;
new Float:z = floatstr(Data[pos]);
SendClientMessage(playerid,COLOR_GREEN,"Spawnul ses k domovu");
SetPlayerPos(playerid,x,y,z);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
fclose(soubor);
return 1;
}
}

To je vše. Omlouvám se že to tu není ke stažení ale co je za problém si to do modu vložit :d.. Jsem nováček v pawnení, pawno znám sice už asi rok a půl ale ještě pořád se tak považuju :d. Vím že mi sem budete psát proč to není v DCMD nebo QCMD.. DCMD a QCMD zatím nechápu ani jsem se na to pořádně nikdy nepodíval takže s tím neumím. Kdyžtak mi napiště kdybych tam měl někde chybu nebo by mi tam někde něco chybělo... Mám totiž velkej gamemod co má asi 4900 řádků :d. Budu rád za kritiku, piště jestli je to totální kravina nebo jestli se vám to líbí, Snesu kritiku :). Mějte se. Čus :)

Link to comment
Share on other sites

Spíš jsem to udělal proto že jsem potřeboval na serveru udělat něco na princip domova :d.. Jiným způsobem bych to asi ani neudělal.. Tak jsem přemýšlel a napadlo mně tohle. A jinak pro zábavu to taky dělám, Pawno mně baví :d. Jinak dík, Mirotelli :)

Link to comment
Share on other sites

Spíš jsem to udělal proto že jsem potřeboval na serveru udělat něco na princip domova :d.. Jiným způsobem bych to asi ani neudělal.. Tak jsem přemýšlel a napadlo mně tohle. A jinak pro zábavu to taky dělám, Pawno mně baví :d. Jinak dík, Mirotelli :)

moc nepřemyšlíš 

new output[256]; Zbytečná proměna ktera zabíra 256 znaku takže ti server bude více zabírat ramky a lidi používaj ZCMD,DCMD,QCMD na ulehčení príkazu + je to rychlejší např QCMD je pry nejrychlejší v česku alespon jsem to slyšel 

Link to comment
Share on other sites

Hej, qcmd je dobrý..
Použi ale ZCMD :p.
Ináč dobrý nápad, ja som to tak tiež mával v house systéme, že ťa spawnlo v dome :).
Ďalej meno nemá 64 znakov.
Output tiež zbytočný 256, velkosť IO prúdu je 128. A to nevravím, že tu by bolo vela aj 16 ;).

return SendClientMessage(playerid, COLOR_WHITE, ""); // To čo je za blbosť? 

--
Velmi sa mi páči, že narozdiel do opičiakov si použil file a nie nejaký .ini handler.
4/5 za chyby čo som napísal vyššie.

Link to comment
Share on other sites

Hej, qcmd je dobrý..

Použi ale ZCMD :p.

Ináč dobrý nápad, ja som to tak tiež mával v house systéme, že ťa spawnlo v dome :).

Ďalej meno nemá 64 znakov.

Output tiež zbytočný 256, velkosť IO prúdu je 128. A to nevravím, že tu by bolo vela aj 16 ;).

return SendClientMessage(playerid, COLOR_WHITE, ""); // To čo je za blbosť? 

--

Velmi sa mi páči, že narozdiel do opičiakov si použil file a nie nejaký .ini handler.

4/5 za chyby čo som napísal vyššie.

ty "opičky" si mě docela urazil . . . je to každeho vec co používá tak nevím co ti dotoho je . . . hej nebudu se vyjadřovat docela si mě hodne najebal . . . .

Link to comment
Share on other sites

Klid, nehádejte se tu :d. Dík za krytyku.. ZCMD, QCMD.. Uřčite se na to podívám :). Vím že tam mám velký proměný, mně vždycky napadne nějaký číslo tak ho tam prostě dam.. A TANGO.. 

if(!fexist(souborname))return SendClientMessage(playerid, COLOR_WHITE, "");

Já jsem nějak nepřemýšlel.. Ta zpráva je tam kvůli tomu vykříčníku. Kdyby tam ta zpráva nebyla tak by to nešlo.. Ale já si neuvědomil že se tam ten vykřičník nemá dávat a ta zpráva taky ne. :d. Ale funguje to tak jsem na to nějak nekoukal. Opravím to :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...