Habs editert..versuch dies mal...hoffe es klappt.
Beiträge von KornChief
-
-
Hab bisher nur das Video gesehen, aber sehr nette Sachen, nur empfehlenswert .
9/10. -
@:
ist das selbe wie "forward ..." und "public ..." nur kürzer ;>. Kannst auch nicht's davor schreiben, dafür muss die Custom Function weiter oben im Script sein (bzw. vor der eigtl. Verwendung, damit das Script sich auskennt).Werbungmach();
Setzt die Variable Werbung auf 0 zurück,damit jeder wieder Werbung machen kann. (Braucht man, wenn du's so tust wie ich, nicht öfter als 1 , d.h. kein [MAX_PLAYERS]) -
SendDeathMessage(killerid,playerid,reason);); // <===== 2 mal ein ); . Einmal nur
// = SendDeathMessage(killerid, playerid, reason);
SetPlayerMapIcon(playerTeam, 0, 395.5647,2531.4995,16.5437, 19, 0 ); // Probier statt dem
SetPlayerMapIcon(i, 0, 395.5647,2531.4995,16.5437, 19, 0 ); // denn es soll ja für die ID (i) unter den gegebenen Voraussetzungen angezeigt werden. Das dann auch beim Rest
SendTeamMessage(playerTeam, COLOR_GREEN, "Scan has been started! All bases has been marked on the map!"); // Zieh dies aus der For-Schleife raus, oder mach "SendClientMessage(i,COLOR_GREEN,"Scan has been started! All bases has been marked on the map!"); stattdessen
SetProTimer("Scantimer",30,0); // im 30 Millisekunden Takt wird er aufgerufen, was etwas schnell ist.Hoffe dies geht
-
Du kannst dies machen, wenn es für alle nicht gehen soll
// Ganz oben
new Werbung;
@Werbungmach();// Im Command
[...]
if(Werbung == 0)
{
// Werbungssachen
Werbung = 1;
SetTimer("Werbungmach",80000,0);
}
else
{
SendClientMessage(playerid,rot,"Es gab erst vor kurzen eine Werbung!");
return 1;
}
[...]//
@Werbungmach()
{
Werbung = 0;
SendClientMessage(playerid,rot,"Jetzt geht wieder Werbung");
return 1;
}
Wenn es für jeden einzelnen Spieler sein soll, musst du dementsprechend "Werbung[MAX_PLAYERS]",@Werbungmach(playerid) und "SetTimerEx" verwenden -
new cost = strlen(string) * 5;// Und eben Abfrage
if(GetPlayerMoney(playerid) < cost)
{
SendClientMessage(playerid,FARBE,"Zu wenig Geld!");
return 1;
} -
Mach
new InDm[MAX_PLAYERS];// Im Command
InDm[playerid] = 1;// Dann auch
if(InDm[playerid] == 1) {...} -
Wenn das "ziel" geportet werden soll: (weiß nicht genau, was du willst/meinst)
// Ganz oben
@setpos(playerid);// Timer
postimer = SetTimerEx("setpos",1000,0,"i",ziel);//Irgendwo im Script außerhalb eines CallBacks
@setpos(playerid)
{
SetPlayerPos(playerid,X,Y,Z);
return 1;
} -
Eniges durcheinander geraten
public OnPlayerDisconnect(playerid, reason)
{
Fuhrerschein[playerid] = 0; // [u] <--- Zeile 352[/u] "=" statt "=="
return 1;
}public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_SFPD)
{
SetPlayerColor(playerid, 0x33CCFFAA);
}
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
SendClientMessage(killerid,0xAA333AA,"Du bist ein Mörder");
return 1;
}public OnVehicleSpawn(vehicleid)
{
return 1;
}public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}public OnPlayerText(playerid, text[])
{
return 1;
}public OnPlayerPrivmsg(playerid, recieverid, text[])
{
return 1;
}zcmd(param, cmdtext[])
{
new string[128], pos, var;
format(string, sizeof(string), "%s ", cmdtext);while((pos = strfind(string, " ", true)) != -1) {
if(var == param) return string;
var++;strdel(string, 0, pos + 1);
if(strcmp(string, " ", true, pos) == 0) goto end;
}end:
string[0] = '\0';
return string;
}public OnPlayerCommandText(playerid, cmdtext[])
{ // <-
if(strcmp("/schein",cmdtext,false,7) == 0) // Einfache Variante,ausschmücken kannst denk ich selber ;D
{
new tmp[130];
tmp = zcmd(1,cmdtext);
new id = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid,0xAA3333AA,"Keine ID angegegeben!");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,0xAA3333AA,"Angegebene ID ist nicht online!");
Fuhrerschein[id] = 1;
SendClientMessage(playerid,0xAA3333AA,"Führerschein vergeben!");
SendClientMessage(id,0xAA3333AA,"Führerschein erhalten!");
return 1;
}// nächsten 2 Zeilen
return 0;
}public OnPlayerInfoChange(playerid)
{
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{ //
if(Fuhrerschein[playerid] == 0)
{
SendClientMessage(playerid,0xAA3333AA,"Du hast keinen Führerschein ;D!"); // Liegt daran, dass wenn du nicht "/schein ID" du keinen Fuhrerschein hast, doch das Remove stimmt da eh nicht. Müsste bei StateChange hin
return 1;
}
return 1;
}public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
//hier müsste das in einer Konstellation hin mit Remove
new newcar= GetPlayerVehicleID(playerid);
new carmodel = GetVehicleModel(newcar);
return 1;
}
P.S. wen ich bei eine m auto enter drücke kommt der "Du hast keinen Führerschein ;D!" Text für mich unerklärlichKeine Ahnung ob das alle waren, tesete
-
// Oben
new Float:Arena[10][3] = { // Du definierst eine Arry ( 10 Zeilen,3 Spalten )
{555.017395, 2876.487304, 2.827838},
{556.508056, 2932.969482, 3.213321},
{583.509826, 2956.563232, 10.022232},
{583.248596, 2956.373535, 18.422161},
{613.906372, 2966.900634, 7.801957},
{635.815551, 3020.493164, 2.087232},
{593.451171, 3056.166503, 2.230519},
{620.233947, 2918.290527, 2.558469},
{609.661682, 2898.529052, 2.376594},
{582.865478, 2864.914062, 2.281667}
};// Im Command
new rand = random(sizeof(Arena)); // Random mit Maximal = 10 (bzw. größte Einheit; Info; Du kannst auch random(10); machen - wenn du ein Random von den Spalten willst,bräuchtest ...sizeof(Arena[])...
SetPlayerPos(playerid,Arena[rand][0],Arena[rand][1],Arena[rand][2]); // PlayerPos setzen -
GangZone ist 2D, d.h. Länge und Breite nur.
max y.
^
|
|
|
|
min. y | min. x --------------------> max. x
( http://wiki.sa-mp.com/wiki/GangZoneCreate )
Ganz leicht erstellen mit Xtreme Vehicle Plotter -
Hast du dir meins auch durchgelesen?
postimer = SetTimer("setpos",1000,true); // Hier wird NICHTS übergeben - nur ein allg. Timer
public setpos()
{
for(new i = 0;i < MAX_PLAYERS; i++) // jede PlayerID wird durchgegangen
{new Float:x,Float:y,Float:z;
GetPlayerPos(i,x,y,z); // Du findest von jeder durchgegangenen PlayerID die X,Y und Z Koordinate raus
SetPlayerPos(ziel,x,y,z);// Nun setzt du "ziel" - was wie gesagt nicht weitergegeben wird - auf X,Y und Z (und das bei jeder Zahl...)
}
}Sinn? Wie gesagt, du brauchst (damit nur 1 User geportet wird bzw. 1 ID übergeben wird) SetTimerEx ( http://wiki.sa-mp.com/wiki/SetTimerEx ).
Verstanden? Wenn etwas (wie String,Integerwert/PlayerID,Float,..) weitergegeben werden soll, musst du - wie ich schonmal gesagt habe - es auch angeben, durch zB
(einfache Funktion): DiesUndJenes(playerid)
( TimerEx ) SetTimerEx("DiesUndJenes",1000,0,"i",playerid); -
-
Theoretisch ja, nur wie "hacken" die sich auf Admin Level 5?
Wenn dann würde ich es bei OnPlayerConnect machen, da das nicht das Script/den Server belastet. -
Du gibst das einfach weiter in deine Funktion (wie SetTimerEx).
zB
new ziel = strval(strget(cmdtext,1));
TuDiesUndDas(ziel);
Du musst natürlich die Funktion selber "definieren",
d.h.
public TuDiesUndDas(playerid) {
SendClientMessage(playerid,rot," Irgendetwas");
return 1;
}
Entweder du machst es mit "public ...." und oben im Script "forward TuDiesUndDas(playerid);" oder du ersetzt die beiden Wörter durch ein @. Du kannst auch alles weglassen,
doch muss dann der Code (TuDiesUndDas(playerid) {}) bevor du ihn wirklich verwendest erscheinen im Script (d.h. weiter oben). Zudem brauchst du beim "public/forward/@/...."
nicht unbedingt playerid schreiben...ist ja nur ein Integerwert, der übergeben wird. Wenn du einen String weitergibst, sehe das so aus:
@ TuDiesUndDas(playerid,strong[]) {}
Hoffe,dass das richtig war, sonst soll mich ein Meister verbesser ;>. -
Du brauchst den ReturnUser Code
-
-
Hier ist ein kleines von mir
// Ganz Oben Wanted[MAX_PLAYERS]; und static gTeam[MAX_PLAYERS]; und #define COPS 0 <- muss aber nicht sein, kannst auch weglassen
if(strcmp("/wanted",cmdtext,false,7)==0)
{
new tmp[130];
tmp = zcmd(1,cmdtext);
new tmp2[130];
tmp2 = zcmd(2,cmdtext);
new DeinLevel = strval(tmp2);
new ID = strval(tmp);// Damit du statt nur ID auch Name oder ID eingeben kannst, bräuchtest ReturnUser
if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid,rot,"Verwende /wanted ID LEVEL!");
if(gTeam[playerid] != COPS) return SendClientMessage(playerid,rot,"Du bist kein COpMember");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,rot,"ID icht online");
if(DeinLevel >= 7 || DeinLevel <= 0) return SendClientMessage(playerid,rot,"Level muss zwischen 1 und 6 liegen!");
SetPlayerWantedLevel(ID,DeinLevel);
Wanted[ID] += DeinLevel;// Nicht unbedingt nötig,gbit GetPlayerWantedLevel
SendClientMessage(playerid,rot,"Wanted Level verändert!");
SendClientMessage(ID,rot,"Du wurdest Wanted gesetzt");
return 1;
}
if(strcmp("/clear",cmdtext,false,6)==0)
{
new tmp[128];
tmp = zcmd(1,cmdtext);
new ID = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid,rot,"Verwende /clear ID");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,rot," Angegebene ID nicht on!");
Wanted[ID] = 0;
SetPlayerWantedLevel(ID,0);
SendClientMessage(playerid,rot,"Wanted gelöscht!");
SendClientMessage(ID,rot,"Wanted gelöscht vom Cop");
return 1;
}// Dazu brauchst du den zcmd Code (kann es auch umschreiben in strtok,dcmd oder was du auch immer hast)
zcmd(param, cmdtext[])
{
new string[128], pos, var;
format(string, sizeof(string), "%s ", cmdtext);while((pos = strfind(string, " ", true)) != -1)
{
if(var == param) return string;
var++;strdel(string, 0, pos + 1);
if(strcmp(string, " ", true, pos) == 0) goto end;
}end:
string[0] = '\0';
return string;
}
Teste einfach -
Wie, so ?
ShowPlayerDialog(playerid,1,2,"Essen","Pommes\n Hamburger\n Cola\n .... " ,"Kaufen","Verlassen"); -