Also erst einmal hast du 2x einen /buygun befehl - mach den, den du nicht nutzen willst raus. Falls du den mit dem Dialog benutzt, dann zeig mal bitte was du unter deinen Dialogen bei DIALOG_AMMUNATION stehen hast. Zum 2. bitte mal IsAtRep(playerid) mit Posten
Beiträge von varrez
-
-
Ich würde den Spieler normal beim ausloggen Speichern lassen und unter OnPlayerConnect, bzw vor dem Login alle Spieler Variablen auf 0 setzen lassen.
-
Verbesserungen? Vor allem auf Meinungen/Feedback setze ich, da ich kaum Ahnung habe und trotzdem was brauchbares haben möchte CPU Lüfter sowie Gehäuse bewusst nicht mit drin.
-
Ich hatte vor einiger Zeit ein iPhone und habe auf meinem PC noch 2-3 Back-Ups die ich gerne wiederherstellen möchte, allerdings so das alle Dateien in einen Ordner auf meinen PC landen/convertiert? werden. Hab sowas noch nicht gemacht, gibt es dazu eine Anleitung oder kann mir jemand schnell so verraten wie das geht? Finde bei Google nur Anleitungen wie ich die Back-Ups wieder aufs iPhone bekomme.
Ich freue mich auf Hilfe,
mit freundlichen Grüßen -
Hallo alle zusammen ich habe auf meinem PC ein Script gefunden (World of San Andreas Version 4.0) und wollte es mal in meinen Server machen aber ich habe festgestellt das es folgende Errors hat:
C:\Users\Florian\Desktop\SAMP Server\pawno\include\M_Bot.inc(165) : error 017: undefined symbol "IsAnAdmin"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(2967) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(2977) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(2987) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(2995) : error 017: undefined symbol "IsAFahrschulVeh"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(3008) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(3018) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(3028) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(3484) : error 017: undefined symbol "GetZoneColorOfFaction"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(3559) : error 017: undefined symbol "OnPlayerCarLogin"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(4179) : error 017: undefined symbol "RemoveBlitzer"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(4194) : error 017: undefined symbol "OnPlayerCarUpdate"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(4371) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(4384) : error 017: undefined symbol "RemoveRoadblock"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(4396) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(4743) : error 017: undefined symbol "IsPlayerInFrac"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5051) : error 004: function "ClearBlack" is not implemented
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5179) : error 017: undefined symbol "IsPlayerInArea"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5286) : error 017: undefined symbol "IsPlayerInArea"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5450) : error 017: undefined symbol "PreloadAnimLib"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5451) : error 017: undefined symbol "PreloadAnimLib"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5452) : error 017: undefined symbol "PreloadAnimLib"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5453) : error 017: undefined symbol "PreloadAnimLib"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5454) : error 017: undefined symbol "PreloadAnimLib"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5455) : error 017: undefined symbol "PreloadAnimLib"
C:\Users\Florian\Desktop\SAMP Server\gamemodes\RealLifeEvolution.pwn(5456) : error 017: undefined symbol "PreloadAnimLib"Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
26 Errors.
Und ich weiß echt nicht weiter. Ich habe schon alles mögliche versucht aber bin zu keinem Ergebnis gekommen. Falls jemand das Script nicht kennt:
Es fehlen alle gelisteten Funktionen, welche du erstellen solltest - oder vielleicht sogar ein Klammerfehler.
-
Darf man das UCP benutzen? Gibt es irgendwo ein Release des Offiziellen Erstellers?
-
An dieser Stelle ein großes Lob an Jeffry: er hat nicht nur mir sehr geholfen, sondern so wie ich das Verfolgen kann, sehr vielen anderen Usern die Scripthilfe benötigen auch. Ich danke dir an dieser Stelle nochmals und hoffe das du diesen tollen Support beibehälst! Klasse, weiter so!
-
Du kannst dann entweder den Range erhöhen, oder du berechnest die Position erst nach der Range Abfrage. Eigentlich hatte ich gedacht 15 reicht als Range.
for(new i = 0; i<sizeof(pCar); i++)
{
new Float:vPos[4];
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1], vPos[2]))
{
vPos[0] = (-8.0 * floatsin(-vPos[3], degrees));
vPos[1] = (-8.0 * floatcos(-vPos[3], degrees));
Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Object[b][ra_a] = vPos[3];
ObjectID[playerid] = CreateObject(1632,Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
SetTimer("BuildObj", 30000, false);
ObjOwner[playerid] = playerid;
return 1;
}
}
return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Laster!");EDIT: Ich habe den Fehler gerade entdeckt, das return war in der Schleife, somit hat es beim ersten Fahrzeug aufgehört. Die Berechnung lasse ich trotzdem mal so, ist ressourcenschonender. Code ist abgeändert, sollte jetzt klappen.
Beim Test erschien erstmal nichts, hab dann ein Checkpoint mit den Koordinaten des erstellten Objects anzeigen lassen, welcher mich hierhin führt. Das Object schwebt weiter oben.
-
Die Berechnung ist durcheinander und hat eigentlich keine Auswirkung mehr auf das Objekt:
for(new i = 0; i<sizeof(pCar); i++)
{
new Float:vPos[4];
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
vPos[0] = (-8.0 * floatsin(-vPos[3], degrees));
vPos[1] = (-8.0 * floatcos(-vPos[3], degrees));
Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Object[b][ra_a] = vPos[3];
if(IsPlayerInRangeOfPoint(playerid, 15.0, Object[b][ra_x], Object[b][ra_y]-2, Object[b][ra_z]))
{
ObjectID[playerid] = CreateObject(1632,Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
SetTimer("BuildObj", 30000, false);
ObjOwner[playerid] = playerid;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Laster!");
}Dann bekomm ich die Nachricht: "Du bist nicht nah genug am Laster"
Edit: dadurch das ich vPos den Object[b ][Koordinaten] zuordne die ich für die Koordinaten zum Object Createn nehme ..
-
Hiermit:
http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617Als Distanz einen negativen Wert.
Falls du es von playerid auf vehicleid ändern willst, kannst ja einfach das GetPlayerPos Teil weg machen.
Dann müsste es ja theoretisch so (eingebunden) funktionieren, oder?
for(new i = 0; i<sizeof(pCar); i++)
{
new Float:vPos[4];
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Object[b][ra_a] = vPos[3];
GetVehicleZAngle(pCar[i], vPos[3]);
vPos[0] = (8.0 * floatsin(-vPos[3], degrees));
vPos[1] = (8.0 * floatcos(-vPos[3], degrees));
if(IsPlayerInRangeOfPoint(playerid, 15.0, Object[b][ra_x], Object[b][ra_y]-2, Object[b][ra_z]))
{
ObjectID[playerid] = CreateObject(1632,Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
SetTimer("BuildObj", 30000, false);
ObjOwner[playerid] = playerid;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Laster!");
}Praktisch nämlich nicht
Edit: auch mit -8.0 nicht
-
for(new i = 0; i<sizeof(pCar); i++)
{
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1]-2, vPos[2]))
{
Object[playerid] = CreateObject(1632, vPos[0], vPos[1], vPos[2]-2.6, 0, 0, vPos[3]+180);
MoveObject(Object[playerid], vPos[0], vPos[1], vPos[2]-0.01, 0.001, 0, 0, vPos[3]+180);
ObjectErstellt[playerid] = 1;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Fahrzeug!");
}Falls es zu schnell geht, mach das 0.001 kleiner, also zu 0.0001.
Habs jetzt so das es der Zeit entspricht. Hätte jetzt jedoch gerne noch, das die ObjectID (also das Object xD) immer hinter dem Fahrzeug erstellt wird, egal wie das Fahrzeug steht - was müsste ich ändern?
for(new i = 0; i<sizeof(pCar); i++)
{
new Float:vPos[4];
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Rampe[b][ra_a] = vPos[3];
if(IsPlayerInRangeOfPoint(playerid, 15.0, Object[b][ra_x], Object[b][ra_y]-2, Object[b][ra_z]))
{
ObjectID[playerid] = CreateObject(1632, Object[b][ra_x], Object[b][ra_y]+8, Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y]+8, Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
SetTimer("BuildObj", 30000, false);
ObjectOwner[playerid] = playerid;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Fahrzeug!");
} -
Hallihallo, wieder ein Problemchen
und zwar möchte ich das ein Object unter/hinter einem Auto erstellt wird und dann langsam hoch fährt (nach 30 Sekunden hinter das Auto) - bei meinem jetzigem Code spawnt das Object direkt, ohne sich überhaupt zu bewegen.
for(new i = 0; i<sizeof(pCar); i++)
{
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1]-2, vPos[2]))
{
Object[playerid] = CreateObject(1632, vPos[0], vPos[1], vPos[2]-2.6, 0, 0, vPos[3]+180);
MoveObject(Object[playerid], vPos[0], vPos[1], vPos[2], 30000, 0, 0, vPos[3]+180);
ObjectErstellt[playerid] = 1;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Fahrzeug!");
}
-
Vielleicht hat er aber auch nicht alle Includes in seinem Verzeichnis die im Script stehen? Es wäre es bestimmt Wert das mal nachzusehen..
-
Aber es werden ja später mehrere Cars sein, welche auch abgefragt werden sollen
-
Wenn ich den Befehl /befehl eingebe, soll abgefragt werden ob der Spieler in der Nähe des erstellten, bzw eines Sultans welche pCar angehören (später mehrere) steht, was mache ich falsch?
Code new pCar[1];Code pCar[0] = CreateVehicle(560,1751.9871,-1683.6760,13.3729,180.6876,3,3, 1500);Code
if(strcmp("/befehl", cmd, true) == 0)
{
new Float:vPos[3];
for(new i = 0; i<sizeof(pCar); i++)
{
GetVehiclePos(i, vPos[0], vPos[1], vPos[2]);
if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1], vPos[2]))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Geht");
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Geht nicht");
}
return 1;
}Edit: Frage geändert
-
Dort gibst du ja auch nicht die maximale Parameteranzahl an.
Schau dir mal deine Funktion dazu an, und was du geschrieben hastKlappt jetzt alles wunderbar, danke euch beiden
-
Dann würde ich mehrere (22) Meldungen im Compiler bekommen, welche so aussehen (die Funktion wird noch woanders genutzt um Stuff zu laden)
Zitatscript.pwn(12993) : warning 202: number of arguments does not match definition
StuffInfo[sSteuern] = mysql_GetInttoo("stuff", "Steuern", "DatensatzID");
Edit: Das Problem mit dem nicht existierendem Code wäre somit aber gelöst
-
stock mysql_GetInttoo(Table[], Field[], Where[]){
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
format(query, 128, "SELECT %s FROM %s WHERE %s = '0'", Field, Table, Where);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
} -
Poste bitte den Code mit dem du die Codes aus der Datenbank lädst.
public LoadCoupons()
{
for(new i = 0; i < MAX_GUTSCHEINE; i++)
{
Gutschein[i][gOwner] = mysql_GetInttoo("gutscheine", "gOwner", "DatensatzID");
Gutschein[i][gCode] = mysql_GetInttoo("gutscheine", "gCode", "DatensatzID");
Gutschein[i][gUsed] = mysql_GetInttoo("gutscheine", "gUsed", "DatensatzID");
Gutschein[i][gUsedBy] = mysql_GetInttoo("gutscheine", "gUsedBy", "DatensatzID");
Gutschein[i][gAktion] = mysql_GetInttoo("gutscheine", "gAktion", "DatensatzID");
}
return 1;
} -
ocmd:usegutschein(playerid, params[])
{
new gutscheinid, string[256];
if(sscanf(params, "d", gutscheinid)) return SendClientMessage(playerid, COLOR_ERRORTEXT, "Benutze: /usegutschein [GutscheinCode]");
for(new g = 0; g <MAX_GUTSCHEINE; g++)
{
if(gutscheinid != Gutschein[g][gCode]) continue;
if(Gutschein[g][gUsed] == 1) return SendClientMessage(playerid, COLOR_ERRORTEXT, "Dieser Code wurde bereits aktiviert.");
if(Gutschein[g][gAktion] == 1)
{
ShowPlayerDialog(playerid, DIALOG_GNAMECHANGE, DIALOG_STYLE_INPUT, "Gutschein einlösen: Namenschange", "Bitte gib deinen neuen Wunschnamen ein:", "Change", "Abbrechen");
SetPVarInt(playerid, "g", g);
/*Gutschein[g][gUsed] = 1;
SendClientMessage(playerid, COLOR_WHITE, "Namensänderung");
format(string, sizeof(string), "UPDATE `gutscheine` SET `gUsed` = '1', `gUsedBy` = '%s' WHERE gCode = '%d'", SpielerName(playerid), Gutschein[g][gCode]);
self_mysql_query(string);*/
}
return 1;
}
return SendClientMessage(playerid, COLOR_ERRORTEXT, "Dieser Code existiert nicht!");
}if(dialogid == DIALOG_GNAMECHANGE)
{
if(strlen(inputtext) > 24) return SendClientMessage(playerid, COLOR_ERRORTEXT, "Der Name darf nicht mehr als 24 Zeichen und nur Zeichen von A-Z, 0-9 besitzen!");
if(mysql_CheckAccount(inputtext) == 1) return SendClientMessage(playerid, COLOR_ERRORTEXT, "Der Name ist bereits in der Datenbank vorhanden!");
new g = GetPVarInt(playerid, "g");
if(strcmp(PlayerInfo[playerid][pOldName], "Niemand", true) == 0) return strmid(PlayerInfo[playerid][pOldName], giveplayer, 0, strlen(giveplayer), 255);
Gutschein[g][gUsed] = 1;
SetPlayerName(playerid, inputtext);
format(string, sizeof(string), "Du hast deinen Namen von %s auf %s geändert.", giveplayer, SpielerName(playerid));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
SendClientMessage(playerid, COLOR_WHITE, "Wichtig: Ändere nach dem Logout deinen Namen im Multiplayer Clienten zu deinem neuen Namen.");
format(string, sizeof(string), "UPDATE `users` SET `Name`='%s' WHERE `Name`='%s'", SpielerName(playerid), giveplayer);
self_mysql_query(string);
format(string, sizeof(string), "UPDATE `gutscheine` SET `gUsed` = '1', `gUsedBy` = '%s' WHERE gCode = '%d'", SpielerName(playerid), Gutschein[g][gCode]);
self_mysql_query(string);
return 1;
}Das kannst du dir wie einen Koffer vorstellen, in den Koffer "g" wird der Wert von g gepackt, und den nehmen wir zum Dialog mit, und schreiben ihn praktischerweise wieder in die Variable g, aus dem Koffer "g".
Und wieder ein Problem.. oh je^^ und zwar wenn ich den Server Restarte, oder das Spiel verlasse und neu Joine, will ich einen unbenutzten Gutschein Code eingeben, bekomme dann aber die Meldung der Code existiert nicht (existiert aber) - total komisch - Code ist wie oben im Zitat