Aha soll das jetzt Server werbung sein.Oder Fremden werbung wie man das nennt?
MFG K44n
Aha soll das jetzt Server werbung sein.Oder Fremden werbung wie man das nennt?
MFG K44n
Sry wusst ich nicht.
Ist ja auch nur ein Menü kein DriveIn
MFG K44n
Finde die Apps einfach nur geil.Aber auch iwiw langweilig.
Hol mir iwan wieder was neues HTC oder so.
7/10 Sauber gemappt.Aber nicht so mein geschmak.
MFG K44n
Erstmal lösch die beiden:
//SpielerInfo[playerid][Adminlevel]=dini_Int(Spielerdatei,"Adminlevel");
//SpielerInfo[playerid][Fraktion]=dini_Int(Spielerdatei,"Fraktion");// da musste vorne das // weg machen
Würd dir nichts bringen anders.
Und zeig mal dein /makeleader befehl und bei onplayerdisconnect bitte auch.
MFG K44n
Danke wird behoben.
MFG K44n
Okey steht dann dort auch.
[npc:join] und danach der name und ip.
Wenn ja connecnten die drauf.
Ich glaub du setzt die bots nicht in die autos.
Hier ein tut dazu:http://www.youtube.com/watch?v=9HB5S3NoQ2w
Er erklärt wie du Bots cars erschtellst.
Und sie rein setzt.
MFG K44n
Okey und wenn du den Server startest.
Also bei der Server-Konsole.
Schau mal ob dort der Bot Connectet.
Achja und bei deiner Server.cfg.
Schau mal dort ob du bei maxnpc auf soviel wie du brauchst.
Wenn da 0 steh können die bots nicht drauf connecten.
MFG K44n
Es könnte dran liegen.
Das du in deinem Script nicht:
ConnectNPC("Bot Name","Aufnahme Name");
MFG K44n
Danke werd ich gleich in mein Tut einbauen.
MFG K44n
Ja es sollte ein Update kommen.
Aber ich hab da problem mit meiner Hp abfrage.
Danke.
Hmm ken mich da mit diesem OnPlayerUpdate nicht so aus.
Es dauerte ja sehr lange es schritt für schritt zu erklären.
MFG K44n
Ja vorher war ich so blöde und hab auf Absenden.
Ich wollt auf Vorschau.
Es war ja noch nicht fertig.
MFG K44n
Hier kuck dir das an:http://wiki.sa-mp.com/wiki/OnDialogResponse
Damit kannste solche Dialoge mit Listen erstellen.
Also was passieren soll wenn er auf was klickt.
MFG K44n
Hallo und Willkommen zu meinem Tutorial.
Ich sah das es kaum ein /freeze,/unfreeze Admin Cmd Tutorial gab.
Naja fangen wir mal an.
Was braucht ihr:
Register/Login Script
Sscanf(Die datei werde ich zum Download Posten)
Ocmd(Geht auch wie Dcmd.Von OCMD werde ich den Download Posten)
Grundkenntnisse
Namen erkennung wie z.b an nem Stock Name usw..
Ein Admin System mit Level bzw rängen.
=======================================Downloads================================
Sscanf code(Pastebin):http://pastebin.com/jAqvuh8h
Ocmd.Include:http://uploaded.to/file/ttos8rz7
Erstmal das Include Ocmd ganz oben:
#include <ocmd>
Das ocmd ist das include das wir später für den befehl brauchen.
Danach definiert ihr diese 2 farben:
#define gelb 0xFFE600FF
#define rot 0xFF000FFF
Damit ihr keine errors bekommt.
Ihr könnt auch eure eigenen Farben nehmen.
Und Wichtig ihr müsst dann den Sccanf Text.
Einfach iwo einfügen am besten unten im Script!
Danach geht ihr irgendwo Z.b hier:
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
Es sollte nicht in Publics sein sondarn dazwischen.Auch nicht in OnPlayerCommandText.
Etzt wenn ihr einen passenden Platz gefunden hast.Schreibt ihr.
Einen Ocmd befehl.Dies würde dan soh aussehen:
ocmd:freeze(playerid,params[])
{
return 1;
}
Jetzt zür erklärung:
ocmd://Damit der Server weist jetzt kommt ein Ocmd Befehl
freeze//Das ist der name des befehles.Ihr könnt es nennen wir ihr wollt z.b lala.
(playerid,params[])//Playerid erklärt sich ja von selbst.Und params[] für die Paramter die wir später benutzen werden.
Den rest müsstet ihr ja kennen.
So als erstes machen wir es so.Das es nur Admins diesen Befehl durch führen können.
Bei mir wär es so:
if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
Beu euch kann es anders sein das Admin System.Ändert es einfach.
Jetzt erstellen wir 1 Variable und 3 String´s.
Dies würde so aussehen:
new ID, grund[128], n1[128], n2[128];
Jetzt zur erklärung:
new // Für die Variabeln und strings die kommen.
ID,//Das ist die Spieler id die wir gleich bei Sscanf umwandeln.Achja das , ist wichtig damit es weist es kommt was neues.
grund[128]//Das ist ein string mit 128 zeichen den wir grund gennant haben.Dies wandeln wir dan auch in SScanf um.
n1[128]//Das ist auch ein String mit 128 zeichen den ich n1 genannt habe.Abgekürtzt Nachricht 1.
n2[128]//Das ist auch ein String mit 128 Zeichen.Wie oben den ich jetzt n2 genannt habe.Damit es weis auch etwas neues.
Gut jetzt zum SScanf befehl.
Damit wir die ID und Grund umwandeln können.
Dies würde so aussehen:
if(sscanf(params,"us",ID,grund))return SendClientMessage(playerid,gelb,"Benutze /freeze [ID/Name] [Grund]");
Jetzt zur erklärung:
if(sscanf//zum überprüfen ob es ein SScanf abfrage ist.
params//Die parameter von oben.
"us"// us sind die Parameter.Das u ist für die ID es kann sowohl die Spieler ID auch wie den Namen.
//Und das s ist für Buchstaben das ersetzen wir gleich.
,ID //wird die u ersetzen.Überall wo wir es im Befehl benutzen.
,grund// wird das s ersetzen.
return SendClientMessage(playerid,gelb,"Benutze /freeze [ID/Name] [Grund]");//Das heißt falls er nichts eingibt kommt diese Meldung!Mit
SendClientMessage...
Gut nun so jetzt wie freeze wir einen Spieler?
Das machen wir mit diesem Befehl:
TogglePlayerControllable(ID,0);
Jetzt zur erklärung:
TooglePlayerControllable//Das ist der befehl das heißt.Sowie verhindere die Spieler Controlle.
,ID//Normal were es ja playerid.Aber durch den sscanf weis es wenn wir den Befehl eingeben und die ID oder name das dieser Spieler.
gefreezt wird.
0//0= Gefreezt und 1=Nicht gefreezt.
Gut nun wer unser befehl Fast fertig.
Wenn wir es jetzt auf compile drücken würden kahmen diese Error:
C:\Users\Kaan\Desktop\BKC Selfmade By K44n\gamemodes\bkc.pwn(258) : warning 204: symbol is assigned a value that is never used: "n2"
C:\Users\Kaan\Desktop\BKC Selfmade By K44n\gamemodes\bkc.pwn(258) : warning 204: symbol is assigned a value that is never used: "n1"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Warnings.
Das heißt das die zwei strings n2 und n1 nicht benutzt werden.
Jetzt Formatieren wir die strings.
Das würde so aussehen:
format(n1,sizeof(n1),"Admin %s freezt %s.Grund %s",Name(playerid),Name(ID),grund);
Das ist die Nachricht für Alle.
Jetzt wieder zur erklärung:
format(n1,sizeof(n1)//Das heißt wir formatieren den string n1 zu n1.
,"Admin %s freezt %s.Grund %s"//Das ist der Text den wir dann gleich anzeigen werden.
,Name(playerid)//Den namen von dem Spieler der diesen Befehl durch führt.
,Name(ID)//Der name Von ID den wir dann Freezen
grund//Das ist der grund den wir dann angeben.
So jetzt macht ihr fast das gleiche wie jetzt nur würde es jetzt so aussehen.
format(n2,sizeof(n2),"Admin %s hatt dich gefreezt.Grund %s",Name(playerid),grund);
Das ist jetzt die Nachricht für den Spieler der gefreezt wird.
Jetzt erklär ich nurnoch:
Name(playerid)//Der Spieler der diesen Befehl durchgeführt hatt.
Grund//Der grund den wir anzeigen lassen.
So jetzt lassen wir die Nachrichten anzeigen:
SendClientMessageToAll(rot,n1);//n1 für unseren strng anmen.Und das mit SendClientMessageToAll das heißt für alle Spieler.
SendClientMessage(ID,n2)//SendClient..kennt ihr ja.Die ID für wehn diese Nachricht gezeigt wir.In unserem Fall unsere ID.n2 für den string!
Jetzt machen wir nur noch eins.
Damit es nicht so aussieht als ob der Spieler wen er gefreezt ist einfach so weiter läuft.Also wenn er läuft und wir ihn freezen.
Ihr müsst dann einfach beim befehl freeze:
Das einfügen:
SetPVarInt(playerid,"pFreezed",1);
Und dann bei:
public OnPlayerUpdate(playerid)
{
return 1;
}
Einfach rein:
if(GetPVarInt(playerid,"pFreezed")==1)return 0;
So jetzt haben wir unser /freeze befehl.
Das würde so aussehen:
ocmd:freeze(playerid,params[])
{
if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
new ID, grund[128], n1[128], n2[128];
if(sscanf(params,"us",ID,grund))return SendClientMessage(playerid,gelb,"Benutze /freeze [ID/Name] [Grund]");
TogglePlayerControllable(ID,0);
format(n1,sizeof(n1),"Admin %s freezt %s.Grund %s",Name(playerid),Name(ID),grund);
format(n2,sizeof(n2),"Admin %s hatt dich gefreezt.Grund %s",Name(playerid),grund);
SendClientMessageToAll(rot,n1);
SendClientMessage(ID,gelb,n2);
SetPVarInt(playerid,"pFreezed",1);
return 1;
}
So jetzt zum /unfreeze befehl:
Ihr koppiert euer /freeze befehl:
ocmd:freeze(playerid,params[])
{
if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
new ID, grund[128], n1[128], n2[128];
if(sscanf(params,"us",ID,grund))return SendClientMessage(playerid,gelb,"Benutze /freeze [ID/Name] [Grund]");
TogglePlayerControllable(ID,0);
format(n1,sizeof(n1),"Admin %s freezt %s.Grund %s",Name(playerid),Name(ID),grund);
format(n2,sizeof(n2),"Admin %s hatt dich gefreezt.Grund %s",Name(playerid),grund);
SendClientMessageToAll(rot,n1);
SendClientMessage(ID,gelb,n2);
SetPVarInt(playerid,"pFreezed",1);
return 1;
}
Jetzt müsst ihr ja logisch denken.
Erstmal bei:
ocmd:freeze(playerid,params[])//Bei dem cmd namen freeze zu unfreeze
Würde soh aussehen:
ocmd:unfreeze(playerid,params[])
Ihr ändert das danach:
new ID, grund[128], n1[128], n2[128];//grund Löschen!Da ihr ja es nicht mehr braucht.
Würde dann soh aussehen:
new ID, n1[128], n2[128];
Danach bei:
if(sscanf(params,"us",ID,grund))return SendClientMessage(playerid,gelb,"Benutze /freeze [ID/Name] [Grund]");//Müsst ihr
//bei "us" s löschen.Und nach ID,grund löscht ihr einfach grund.Da die Variable ja nichtmehr benutzt wird.
//Danach bei SendClient... Löscht ihr [Grund].Und schreibt bei "Benutze /freeze.Einfach Benutze /unfreeze
Das würde dan soh aussehen:
if(sscanf(params,"u",ID))return SendClientMessage(playerid,gelb,"Benutze /unfreeze [ID/Name]");
Das wird ja oben erklärt.
So jetzt damit auch der Spieler wirklich entfreezt wird.
Müsst ihr bei:
TogglePlayerControllable(ID,0);//Dort steht ja 0 ihr müsst es auf 1 ändern.Damit er auch wieder irgendwas machen kann.
Das würde dann soh aussehen:
TogglePlayerControllable(ID,1);
Jetzt zu den beiden Strings n1 und n2.
Bei:
format(n1,sizeof(n1),"Admin %s freezt %s.Grund %s",Name(playerid),Name(ID),grund);//Ändert ihr Admin %s freezt einfach bei freezt auf entfreezt %s.
//Und dann bei [Grund %s] einfach das löschen.Dann müsst ihr noch bei nach Name(ID), das , entfernen und das grund auch.!
//Weil ja wir den Grund nicht mehr anzeigen und die Variable nicht mehr haben.
Das würde dann so aussehen:
format(n1,sizeof(n1),"Admin %s entfreetz %s",Name(playerid),Name(ID));
Und jetzt noch den zweiten string n2:
format(n2,sizeof(n2),"Admin %s hatt dich gefreezt.Grund %s",Name(playerid),grund);//Ändert ihr bei gefreezt auf entfreezt.Und bei [Grund %s] Löschen.
//Und dann nach.Name(playerid) das , entfernen und grund auch.
Das würde dann so aussehen:
format(n2,sizeof(n2),"Admin %s hatt dich entfreezt.",Name(playerid));
Bei SendClientMessage...
Und bei SendClientMessageToAll.. einfach lassen da wir ja dort oben die strings geändert haben.
Jetzt müsst ihr noch das PVar pFrezzed auf 0 stellen.Damit keine fehler auftreten.
SetPVarInt(playerid,"pFreezed",0);
Das würde dann soh aussehen:
ocmd:unfreeze(playerid,params[])
{
if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
new ID, n1[128], n2[128];
if(sscanf(params,"u",ID))return SendClientMessage(playerid,gelb,"Benutze /unfreeze [ID/Name]");
TogglePlayerControllable(ID,1);
format(n1,sizeof(n1),"Admin %s entfreetz %s",Name(playerid),Name(ID));
format(n2,sizeof(n2),"Admin %s hatt dich entfreezt.",Name(playerid));
SendClientMessageToAll(rot,n1);
SendClientMessage(ID,gelb,n2);
SetPVarInt(playerid,"pFreezed",0);
return 1;
}
Und wenn ihr alles habt würde es dann soh aussehen:
ocmd:freeze(playerid,params[])
{
if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
new ID, grund[128], n1[128], n2[128];
if(sscanf(params,"us",ID,grund))return SendClientMessage(playerid,gelb,"Benutze /freeze [ID/Name] [Grund]");
TogglePlayerControllable(ID,0);
format(n1,sizeof(n1),"Admin %s freezt %s.Grund %s",Name(playerid),Name(ID),grund);
format(n2,sizeof(n2),"Admin %s hatt dich gefreezt.Grund %s",Name(playerid),grund);
SendClientMessageToAll(rot,n1);
SendClientMessage(ID,gelb,n2);
SetPVarInt(playerid,"pFreezed",1);
return 1;
}
ocmd:unfreeze(playerid,params[])
{
if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
new ID, n1[128], n2[128];
if(sscanf(params,"u",ID))return SendClientMessage(playerid,gelb,"Benutze /unfreeze [ID/Name]");
TogglePlayerControllable(ID,1);
format(n1,sizeof(n1),"Admin %s entfreetz %s",Name(playerid),Name(ID));
format(n2,sizeof(n2),"Admin %s hatt dich entfreezt.",Name(playerid));
SendClientMessageToAll(rot,n1);
SendClientMessage(ID,gelb,n2);
SetPVarInt(playerid,"pFreezed",0);
return 1;
}
Viel Spaß Damit bei errors Bugs einfach hier posten.
//Edit:Hinzugefügt SetPVarInt(playerid,"pFreezed",1); und SetPVarInt(playerid,"pFreezed",0); bie /freeze und /unfreeze
//Edit:bei if(GetPVarInt(playerid,"pFreezed")==1) return 0; " hinzugefügt.
MFG K44n
Hmm naja Carpo hilft mir leider nicht weiter.
Hab das auch so versucht:
public bsn1(playerid)
{
new Float:health;
GetPlayerHealth(playerid,health);
if (health > 99.0)return SendClientMessage(playerid,0xAF0000FF,"Du kannst nichts mehr essen");
SendClientMessage(playerid,0x0037FFFF,"Guten Appitet");
SetPlayerHealth(playerid,health + 10);
GivePlayerMoney(playerid,-10);
return 1;
}
Aber funktioniert leider nicht.
Brauche immer noch hilfe bin verzweifelt.
MFG K44n
Hier falls dir das wieter hilft:
public bsn1(playerid)
{
SendClientMessage(playerid,0x0037FFFF,"Guten Appitet");
GivePlayerHP(playerid,10);
GivePlayerMoney(playerid,-10);
return 1;
}
MFG K44n
Danke für die codes.
Hab das jetzt so:
if(GetPlayerMoney(playerid) < 30)return SendClientMessage(playerid,0xAF0000FF,"Du hast nicht genug geld");
new Float:health;
GetPlayerHealth(playerid,health);
if (health > 99.0)return SendClientMessage(playerid,0xAF0000FF,"Du kannst nichts mehr essen");
SetTimerEx("bsn1",2000,false,"d",playerid);
SendClientMessage(playerid,0xD48B00FF,"Dein Chicken Burger kommt gleich");
Es kommt immer noch die nachricht Dein schicken usw kommt.
Und ich krig noch den health leider.
MFG K44n
Danke achja.
Hab da nochn problem.
Ich hab das im scriot:
new Float:health;
GetPlayerHealth(playerid,health);
if (health > 100.0)
{
SendClientMessage(playerid,0xAF0000FF,"Du kannst nichts mehr essen");
}
SetTimerEx("bsn1",2000,false,"d",playerid);
SendClientMessage(playerid,0xD48B00FF,"Dein Chicken Burger kommt gleich");
Aber das mit dem health get leider nicht.
Gibt mir immer noch health.
Danke schonmal im vorraus.
MFG K44n