Wieso, gibts die F5 Taste bei Dir nicht?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Beitrag von The Sensei ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Wie würdest du es schreiben bzw- würdest du es anders schreiben.
-
Er meint damit, dass du es selber ausprobieren sollst. Micht jeder hat Zeit, 5 Stunden ein Script für jemanden zu testen.
-
Habs kurz überflogen. Ich mache das so:
- 10 Minuten Timer
- Timer wird aufgerufen und geht durch alle Spieler durch und ruft SaveAccount(playerid) auf
- SaveAccount(playerid) => Speichert den Spieler ab
- Beim Disconnect wird SaveAccount(playerid) manuell aufgerufen.
-
Was genau hast du denn vor, nachdem es gespeicher worden ist? Wird der HEX Wert in einem String verwendet (also muss er genau in dem Format ausgegeben werden), oder willst du es zum Beispiel für SetPlayerColor verwenden?
Wenn du es als String haben willst, dann kannst du es mit "%x" formatieren (format) und als VARCHAR in der Tabelle speichern. Und wenn du es nur für eine Anweisung wie SetPlayerColor (o.ä.) speichern willst, dann reicht es, wenn du es wie eine Ganzzahl (Integer) behandelst, sprich du speicherst den HEX Wert einfach als Integer ("%d" bzw. "%i") und in der Datenbank als INT, und liest ihn so auch aus. Es ist bei solchen Funktionen (SetPlayerColor) egal, ob du beispielsweise "-1" oder "0xFFFFFFFF" verwendest, da beides das Gleiche ist.
Er wird für SetPlayerColor() und für eine Gangzone verwendet.
Das Problem ist aber, dass der Wert im Dezimalsystem aber die Größe eines Integers sprengt.0xFFFC00FF => 4294705407
ZitatWarning: #1264 Out of range value for column 'color' at row 1
-
Meh.
Dann nimm das hier:
http://forum.sa-mp.com/showpost.php?p=1819909&postcount=6Somit speicherst du R G B A jeweils einzeln (Werte von 0 - 255).
-
Hey,
wie kann ich Checkpoints erstellen, welche beim betreten verschwinden und auf der minimap überall zu sehen sind?Bis jetzt habe ich es so:
CreateDynamicCP(1480.8396,-1770.6718,18.7958,5.0);
Dieser ist nicht aufsammelbar und auch erst ab einer gewissen nähe auf der Karte sichtbar.
Grüße
Dean -
-
OnPlayerEnterDynamicPickup()
Er hat einen Checkpoint erstellt, kein Pickup.
DeaN Hunter:
Du musst den Checkpoint so erstellen:
cp1=CreateDynamicCP(1480.8396,-1770.6718,18.7958,5.0,-1,-1,-1,10000.0);
und global, unter den Includes:
new cp1;
Dann siehst du ihn von überall. Hast du aber mehrere Checkpoints, dann zeigt es dir nur den dir am nächsten Checkpoint an, da SA-MP pro Spieler nur einen Checkpoint anzeigen kann. Wenn du diese auf der Karte markieren willst, dann nimm dafür Map Icons.Löschen kannst du einen Checkpoint beim betreten in:
OnPlayerEnterDynamicCP
if(checkpointid == cp1) DestroyDynamicCP(checkpointid); -
-
Er hat einen Checkpoint erstellt, kein Pickup.

Das Prinzip ist dennoch das Selbe.
-
Hey,
ich komme nicht weiter mit dem /UNBAN befehl... bei diesem Befehl passiert nichts, ich gebe zwar den namen ein aber nichts passiert... warum?
ocmd:unban(playerid,params[])
{
if(SpielerInfo[playerid][pAlevel] >= 1)
{
new pID,string[256],aname[MAX_PLAYERS],unbanname[MAX_PLAYER_NAME],query[256];
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"s[24]",unbanname)) return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} /UnBan [Name]");
if(mysql_CheckTBanAccount(pID) == 1)
{
format(query,sizeof(query),"DELETE FROM SpielerTimeBanned WHERE `Name`='%s'",unbanname);
mysql_query(query);
format(string,sizeof(string),"[A-INFO]{FFFFFF} Der Timeban von %s wurde von %s vollständig gelöscht(TimeBan-Entfernt)!",unbanname,aname);
SendAdminMessage(0xFF0000FF,string);
}
else if(SpielerInfo[pID][pBanned] == 1)
{
format(query, sizeof(query), "INSERT INTO `user` (`Banned`) VALUES (0)",SpielerInfo[pID][pBanned]);
mysql_query(query);
format(string,sizeof(string),"[A-INFO]{FFFFFF} %s hat den Ban von %s vollständig gelöscht!(Ban-Entfernt)",unbanname,aname);
SendAdminMessage(0xFF0000FF,string);
}
else if(SpielerInfo[pID][pBanned] == 0 || mysql_CheckTBanAccount(pID) == 0)
{
SendClientMessage(playerid,0xFF0000FF,"[FEHLER] {FFFFFF}Dieser Spieler wurde nicht gebannt!");
}
}
return 1;
} -
new pID,/* .. */ // Nur pID zu erstellen reicht nicht
//
if(sscanf(params,"s[24]",unbanname)) return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} /UnBan [Name]");
if(mysql_CheckTBanAccount(pID) == 1) // <- pID gibt es nicht "gültig"
// ...
else if(SpielerInfo[pID][pBanned] == 1) // <- pID gibt es nicht "gültig". Wie soll ein gesperrter Spieler überhaupt auf dem Server sein,damit du pBanned checken kannst?
// ...
else if(SpielerInfo[pID][pBanned] == 0 || mysql_CheckTBanAccount(pID) == 0)// <- pID gibt es nicht "gültig". Wie soll ein gesperrter Spieler überhaupt auf dem Server sein,damit du pBanned checken kannst?
Nur pID zu deklarieren bringt dir ja schließlich nichts. Wenn du bei /UNBAN den Namen angibst ( String ), kannst du schlecht eine ID benutzen um darüber zu entbannen.
Du müsstest mysql_CheckTBanAccount als Alternative auch mit String / Namen erstellen und anwenden. -
Alles anzeigen
Er hat einen Checkpoint erstellt, kein Pickup.
DeaN Hunter:
Du musst den Checkpoint so erstellen:
cp1=CreateDynamicCP(1480.8396,-1770.6718,18.7958,5.0,-1,-1,-1,10000.0);
und global, unter den Includes:
new cp1;
Dann siehst du ihn von überall. Hast du aber mehrere Checkpoints, dann zeigt es dir nur den dir am nächsten Checkpoint an, da SA-MP pro Spieler nur einen Checkpoint anzeigen kann. Wenn du diese auf der Karte markieren willst, dann nimm dafür Map Icons.Löschen kannst du einen Checkpoint beim betreten in:
OnPlayerEnterDynamicCP
if(checkpointid == cp1) DestroyDynamicCP(checkpointid);
Erstmal danke für die Hilfe
Habe es nun wie folgt, beim betreten wird der Checkpoint allerdings nicht zerstört und die Nachricht kommt auch nicht:
case DIALOG_NAVI:
{
new cp1, checkpointid;
if(listitem==0)
{
//Stadthalle
cp1=CreateDynamicCP(1480.8396,-1770.6718,18.7958,5.0,-1,-1,-1,10000.0);
if(checkpointid == cp1)
{
DestroyDynamicCP(checkpointid);
SendClientMessage(playerid, COLOR_RED, "Du hast den Checkpoint erreicht");
return 1;
}
}
if(listitem==1)
{
//LSPD
}
if(listitem==2)
{
//Medic
}
SendClientMessage(playerid, COLOR_GREY, "Die Position wird dir auf der Karte angezeigt.");
return 1;
}
case TransportAutoDialog: -
Der Teil hier muss unter OnPlayerEnterDynamicCP:
if(checkpointid == cp1)
{
DestroyDynamicCP(checkpointid);
SendClientMessage(playerid, COLOR_RED, "Du hast den Checkpoint erreicht");
return 1;
}new cp1;
muss unter die Includes. -
Danke geht nun,
aber jetzt komme ich nicht mit dem "GetTeam" Befehl weiter, dieser Befehl soll ein bestimmten Team zu sich porten.. es passiert einfach garnichts:
ocmd:getteam(playerid,params[])
{
if(SpielerInfo[playerid][pAlevel] >= 5)
{
new TeamID,Float:ax,Float:ay,Float:az,Float:afacing, string[289],astring[289],aname[MAX_PLAYERS];
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"i",TeamID))return SendClientMessage(playerid, 0xFF0000FF,"[FEHLER]{FFFFFF} /GetTeam [TeamID]");
if(TeamID < 1 ||TeamID > 3)return SendClientMessage(playerid,0xFF0000FF,"[FEHLER] {FFFFFF}Es gibt nur 3 Teams!(1.Army 2.Terroristen 3.Hitman)");
GetPlayerPos(playerid, ax, ay, az);
GetPlayerFacingAngle(playerid, afacing);
if(TeamID == 1) //ARMY
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(gTeam[i] == 1)
{
SendClientMessage(i,-1,"Du bist als Army teleportiert wurden");
SetPlayerPos(i, ax, ay, az);
SetPlayerFacingAngle(i, afacing);
format(string,sizeof(string),"[INFO]{FF8900} %s {FFFFFF}hat das Team {FF8900}US Army {FFFFFF}geportet!",aname);
SendClientMessageToAll(0xFF0000FF,string);
format(astring,sizeof(astring),"[A-INFO] [%d]%s(LvL: %s) hat '{FFFFFF}/GETTEAM{FF0000}' ausgeführt!",playerid,aname,GetAlevel(playerid));
SendAdminMessage(0xFF0000FF,astring);
}
}
}
}
else if(TeamID == 2) //Terror
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(gTeam[i] == 2)
{
SendClientMessage(i,-1,"Du bist als Terror teleportiert wurden");
SetPlayerPos(i, ax, ay, az);
SetPlayerFacingAngle(i, afacing);
format(string,sizeof(string),"[INFO]{FF8900} %s {FFFFFF}hat das Team {FF8900}Terroristen {FFFFFF}geportet!",aname);
SendClientMessageToAll(0xFF0000FF,string);
format(astring,sizeof(astring),"[A-INFO] [%d]%s(LvL: %s) hat '{FFFFFF}/GETTEAM{FF0000}' ausgeführt!",playerid,aname,GetAlevel(playerid));
SendAdminMessage(0xFF0000FF,astring);
}
}
}
}
//..[i][/i] -
hallo com ich arbeite gerade an mein toten system und wiederbeleben system aber weiß gerade nicht weiter
/wb||/wiederbeleben
unswa sieht es bisher so aus
und ich weiß nicht wie ich bei dem /wiederbeleben befehl abfragen soll ob er bei der stelle des toten spielers ist//Oben
new TotenKopf[MAX_PLAYERS];
new Text3D:TotenName[MAX_PLAYERS];//OnPlayerDisconnect
DestroyPickup(TotenKopf[playerid]);
Delete3DTextLabel(TotenName[playerid]);public OnPlayerDeath(playerid, killerid, reason)
{
sInfo[playerid][PTot] = 1;
new Float:px,Float:py,Float:pz,pv,pi,string[80];
GetPlayerPos(playerid, px,py,pz);
GetPlayerVirtualWorld(playerid,pv);
GetPlayerInterior(playerid,pi);
TotenKopf[playerid] = CreatePickup(1254,1,px,py,pz);
format(string,sizeof(string),"Leichen Name\nvon %s",getPlayerName(playerid));
TotenName[playerid] = Create3DTextLabel(string,GRAU,px,py,pz,10,pi,pv);
format(string, sizeof(string),"Der Spieler %s ID %i ist soeben gestorben!",getPlayerName(playerid),playerid);
SendOndutyMedicMessage(GELB,string);
return 1;
}ocmd:tote(playerid)
{
if(!isPlayerInFrakt(playerid,3)) return SendClientMessage(playerid,ROT,"Du bist Kein Notarzt!");
if(sInfo[playerid][mduty] == 1)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(sInfo[i][PTot] == 1)
{
new string[200];
SendClientMessage(playerid,ROT,".:Tote Spieler:.");
format(string,sizeof(string),"%s || ID %i",getPlayerName(playerid),playerid);
SendClientMessage(playerid,GELB,string);
return 1;
}
else
{
SendClientMessage(playerid,ROT,"Es gibtr zu Zeit keine Toten User");
return 1;
}
}
}
}
else
{
SendClientMessage(playerid,ROT,"Du bist nicht als Notarzt Onduty!");
return 1;
}
return 1;
}ocmd@2:wb,wiederbeleben(playerid,params[])
{
if(!isPlayerInFrakt(playerid,3)) return SendClientMessage(playerid,ROT,"Du bist Kein Notarzt!");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInRangeOfPoint(playerid,//hier weiß ich nicht wie ich abfragen soll ob er an der stelle vom toten ist oder nicht)
{return 1;
}
else
{
SendClientMessage(playerid,ROT,"Du bist bei keinem Toten Spieler");
return 1;
}
}
}
return 1;
}ocmd:awb(playerid,params[])
{
new pID,string[128];
if(!isAdmin(playerid,1337)) return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
if(sInfo[playerid][adminduty] == 0) return SendClientMessage(playerid,ROT,"Du bist nicht Aduty!");
if(sscanf(params, "u", pID)) return SendClientMessage(playerid, ROT, "/awd [ID]");
format(string,sizeof(string),"Du hast %s dich mit Hilfe von Adminrechten wiederbelebt!",getPlayerName(pID));
printf("%s hat den Spieler %s mit Hilfe von Adminrechten wiederbelebt)",getPlayerName(playerid),getPlayerName(pID));
SendClientMessage(playerid,ROT,string);
format(string,sizeof(string),"%s %s hat dich mit Hilfe von Adminrechten wiederbelebt!",arang(playerid),getPlayerName(playerid));
SendClientMessage(pID,GELB,string);
sInfo[pID][PTot] = 0;
SpawnPlayer(pID);
DestroyPickup(TotenKopf[playerid]);
Delete3DTextLabel(TotenName[playerid]);
return 1;
}//OnPlayerSpawn
if(sInfo[playerid][PTot] == 1)
{
SendClientMessage(playerid,GELB,"Du bist gestorben!");
SetPlayerVirtualWorld(playerid,89);
SetPlayerPos(playerid,816.6987,-1103.0229,25.7914);
} -
Hier hat sich doch der Fehlerteufel eingeschlichen:
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(checkpointid == cp1)
{
DestroyDynamicCP(checkpointid);
SendClientMessage(playerid, COLOR_RED, "Du hast den Checkpoint erreicht");
return 1;
{
if((checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")
-
Vor:
if((checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")
die "{" muss "}" sein. Sonst gehen zwei Klammern auf und keine zu.
und:
if((checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")
zu:
if(checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")) -
Beitrag von Dean_Conery ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
