Hab es auch etwas abgespeckt für dich.
if(dialogid==DIALOG_WAUSW)
{
if(response)
{
if(listitem == 1)
{
if(GetPlayerMoney(playerid) > 500)
{
GivePlayerMoney(playerid, -500);
GivePlayerWeapon(playerid,29,500);
}
else SendClientMessage(playerid,COLOR_WHITE,"Nicht genügend Geld");
}
if(listitem == 2)
{
if(GetPlayerMoney(playerid) > 750)
{
GivePlayerMoney(playerid, -750);
GivePlayerWeapon(playerid,30,500);
}
else SendClientMessage(playerid,COLOR_WHITE,"Nicht genügend Geld");
}
return ShowPlayerDialog(playerid,DIALOG_WAUSW,DIALOG_STYLE_LIST,"Waffen-Auswahl","Name - Preis - Rang\nMP5 - 500$ - Rang 1\nAK-47 - 750$ - Rang 2\n9mm - 250$ - Rang 3\nSilenced 9mm - 400$ - Rang 4\nM4 - 1000$ - Rang 5\nDesert Eagle - 750$ - Rang 6\nCountry Rifle - 1200$ - Rang 7\nSniper Rifle - 1500$ - Rang 8\nSawn-Off Shotgun - 1000$ - Rang 9\nCombat Shotgun - 1000$ - Rang 10\nFlammenwerfer - 3000$ - Rang 11\nRPG - 5000$ - Rang 12","Kaufen","Beenden");
}
}
Beiträge von Templer
-
-
-
Junge, hast du überhaupt meinen post oben beachtet? xD Dein IsPlayerInTruck macht Fehler. Wozu schreibe ich die Lösung hin.
-
Nein, es liegt eindeutig an: StartRace(RaceI[Rand][RName]);
Besonders die Variable "Rand" ist zu beachten. Sollte ein Wert dort sein, der größer als das Array ist, so wird der Code nichtmehr ausgeführt.
Solltest du nicht wissen was zu tun ist, schick mir die Definition von StartRace und die möglichen Werte von der Variable von "RaceID".
-
-
ycmd("/terrortor")
{
if(SpielerInfo[playerid][Fraktion] != 7) return MSG(playerid,COLOR_RED,"Du bist kein Terrorist!");
if(!IsPlayerInRangeOfPoint(playerid,10.0,207.07095336914, -1454.6551513672, 14.82932472229)) return MSG(playerid,COLOR_RED,"Du bist nicht nahe genug am Tor!");
if(terrorvar == 0) MoveDynamicObject(terrortor, 207.07095336914, -1454.6551513672, 8.9357099533081,5);
else MoveDynamicObject(terrortor, 207.07095336914, -1454.6551513672, 14.82932472229,5);
terrorvar=(terrorvar==1?0:1);
return 1;
} -
Also deine Abfrage kann gar nicht klappen, weil er höchstens für truck[1] bis truck[6] überprüft, ob der Wert Wahr ist.
[color=#1E39F6]public IsPlayerInTruck(playerid)
{
switch(GetPlayerVehicleID(playerid))
{
case truck[1]..truck[6]: return true;
}
return false;
} -
forward CheckPos(Float:playerid);
public CheckPos(Float:playerid)
{
if(PlayerToPoint(20, i,292.0274,-36.0291,1001.5156))
{//Ammunation 1
GameTextForPlayer(i, "~r~Jailed for going to ammunation", 5000, 1);
SetPlayerInterior(i, 6);
SetPlayerPos(i,264.6288,77.5742,1001.0391);
}
else if(PlayerToPoint(2, i,1542.8965,-1627.7570,13.3828)&&(SpielerInfo[playerid][sMember] == 1 || SpielerInfo[playerid][sLeader] == 1))
{// pd besucher raus
MoveObject(lspdtor,1546.338623,-1627.621337,8.812362,2.0);
SetTimer("lspdtor1",6000,0);
}
}//EDIT: Beachte nur das "else if", den Rest kannst im Script belassen.
-
Jungs, lesen bildet.
Zitat:
Es gibt ja standart Funktionen in Sa-mp, und diese möchte ich gerne per Command aufrufen lassen.(Im obigen Beispiel kann man erkennen, dass er nicht Funktionen sondern die Standart CommandBefehle vom Samp Clienten meint.)
Und die Befehle bei jedem Samp Clienten wie /interior oder /timestamp oder /q und sonstiges werden nicht an den Server weitergeleitet, somit kann man auch nie herausfinden wann er die Befehle ausgeführt hat bzw. ihn zwingen lassen ihn diese Befehle einzugeben (außer man spammt seinen Clienten zu xD)
-
In dem Fall ist es unmöglich OnGameModeExit zu verändern.
Andere Server haben Ihr eigenen Restart Befehl geschrieben bzw. Sie freezen den Spieler mit einem gewissen Sichtpunkt und dann starten den Server neu, indem die Spieler alle einen TimeOut erhalten und sofort erneut darauf connecten.
-
Es gibt keinen Join Button xD Klick einfach auf Spawn
-
@ TheBestOne, steht alles oben in meinem Topic! Genauer gesagt im 1. Edit Text
-
-
Danke für die vielen weitere Kommentare ^^.
Schade finde ich es selbst nicht, denn ich habe es theorethisch auch geplant dies zu veröffentlichen. Zwar ist es leider nicht fertiggestellt, aber es bietet innerlich tolle Sachen. Beispielweise, wie ich die Kommunikation zwischen Script und NPC´s vollbracht habe.
Nebenbei merke ich gerade, dass ich die Botdateien vergessen habe... Ich editiere es sofort.
-
Vielen Dank WarF
Endlich einer, der sich traut hier ein Kommentar abzulassen und sich mein Script angeschaut hat.
-
Hallo Leute,
Nun werde ich etwas größeres von mir veröffentlichen. Zwar ist es wirklich so weit, dass man locker damit inGame ein TDM erstellen könnte, aber leider auch noch nicht fertig. Es ist zwar kein fertiges Script wie es sich jeder vorstellen würde, jedoch kostet es auch nichts (trotz der vielen Arbeit dahinter).
Viele von euch kennen bereits meine tollen Copyright Regeln von den unterstehenden Includes, denn es gibt in Wahrheit keine.
Ihr könnt dieses Script entweder weiterführen oder Programmiertechniken anschauen. Dieses Script wo aufzusetzen wäre vielleicht auch für euch ein bisschen viel Arbeit, aber wenn Ihr es geschafft habt, dann werdet ihr auch merken, was für Unmengen an Arbeit und Einfallsreichtum vorhanden ist.
Da ich dieses Script auch nicht für Anfänger empfehle, wird auch kein HowTo Install Readme dort im Paket zu finden sein. Denn das Script ist wirklich nichts für schwache Nerven, jene dann sinnlose Kommentare abgeben.
Warum die SQL DB (eigentlich wegen der samp_seaz) groß ist? Weil die Z-Höhenpunkte unter 0.0 dort gespeichert sind. Diese Tabelle wurde derzeit in meinem Selfmade für meinen Angler verwendet. Fazit: Man kann überall im Wasser fischen und es treffen tolle Fischarten zu und man muss dann, wenn man auf einen Fisch zutrifft, seine Stärke beweisen durch Tastendrücken und das ist wirklich nichts für schwache Nerven ^^.
Mir ist auch im klaren das keiner von euch zu 75 % so richtig sich dafür interessiert einen HomeServer mit mySQL dafür zu erstellen um sich umzusehen, aber es liegt ja letztendlich an euch, ob Ihr wollt oder nicht.
Ich möchte nur dazu notieren, dass ein Bug und viele Vorschläge in der "Selfmade ToDo" Liste steht, wenn es jemanden interessiert.
Sollte wer gerne wissen, was alles (außer dem angefangenem InventarSystem und dem Angler) noch alles vorhanden ist, der sehe sich bitte den Selfmade Bericht an.
Jene die das Script schon runterladen möchten hier die Daten:
http://te000399.host.inode.at/SM_by_Templer.zip //Die GameMode daten (Plugins für Linux, Includes, gamemode, filterscripts, ...)
http://te000399.host.inode.at/SelfmadeDB.zip //Die MySQL DatenbankIch hoffe ihr seid nicht all zu sehr von dieser einfachen Vorstellung überrascht und verbelibe weiterhin euer
LaVey
----------------
http://te000399.host.inode.at/SelfmadeBericht.pdf <---- Die gesamte Information über das Selfmade
http://te000399.host.inode.at/gs-life.pwn (Zwar ist es kein Pastebin, aber das GameMode als TextVorschau für Browser, da Pastebin max. 500 Zeilen annimmt, als Free User)
http://pastebin.com/xA51zfzC <---- gs_info.inc (Alle Definitionen und Deklerationen für das GameMode.)
http://pastebin.com/CaCVKeT9 <--- gs_anticheat.inc (Derzeit ist eig. nur AntiMoney und viele viele Funktion re-defines vorhanden.)
http://pastebin.com/hviE6Wvn <---- gs_inventar.inc (Alles was mit dem noch derzeit angefangenem Inventar zu tun hat.)//EDIT: Eine Info betreffend der SQL Daten.
Die mySQL Benutzerdaten werden in meiner eignen mysql.inc bearbeitet. Dort sind dann die jeweiligen Defines.
//EDIT2: Habe die BotDateien vergessen hinzuzufügen.
http://te000399.host.inode.at/Selfmade_BotDateien.zip
Beinhaltet folgende Bot´s:
-> Lieferbot für das Autohaus bei Coutt and Schutz
-> PorterSteve (gennannt ChuckNorris) der euch die Fahrzeuge schrottet (Sehr empfehlenswert ^^)
-> Stapler Josef und Dieter die eure Trucks für eure Waffenlager aufladen (Der Fahrstil ist nicht zu kritisieren.) -
Wie hast du denn den Befehl InGame eingegeben?
-
Dann weiß ich auch nicht bescheid, denn bei mir klappt es mit diesem Beispiel
#include <a_samp>
main()
{
#include <OnPlayerCommandText/test>
}und in der Datei (unter includes/OnPlayerCommandText/test.inc) steht nur
print("Hallo");
und das wird angezeigt.
-
Hoffe du verstehst den Code
#define Waffendialog (5)
#define WaffendialogText ("Pistolen\nShotguns\nGewehre\nGranaten")public OnPlayerCommandText(playerid,cmdtext[])
{
if(!strcmp(cmdtext,"/waffenmenu",false))
{
SetPVarInt(playerid,"WD_ID",1);
return ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"WaffenMenü",WaffendialogText,"Weiter","Zurück");
}
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==Waffendialog)
{
switch(GetPVarInt(playerid,"WD_ID"))
{
case 1:
{
if(!response) return DeletePVar(playerid,"WD_ID");
SetPVarInt(playerid,"WD_ID",(listitem+2));
switch(listitem)
{
case 0: ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"Pistolen","Desert Eagle\n9mm\nSilenced 9mm","Weiter","Zurück");
case 1: ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"Pistolen","Shotgun\nSawn-Off\nCombat Shotgun","Weiter","Zurück");
case 2: ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"Pistolen","AK-47\nM4a1","Weiter","Zurück");
case 3: ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"Pistolen","HE\nRauch","Weiter","Zurück");
}
return 1;
}
case 2..5:
{
if(!response)
{
SetPVarInt(playerid,"WD_ID",1);
return ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"WaffenMenü",WaffendialogText,"Weiter","Zurück");
}
new string[128],weapon[16],weaponid,ammo,id=GetPVarInt(playerid,"WD_ID");
switch(id)
{
case 2: //Wenn Spieler im Pistolen-Menü ist
{
if(listitem==0) {weaponid = 24; ammo=20;}
else if(listitem==1) {weaponid = 22; ammo=60;}
else if(listitem==2) {weaponid = 23; ammo=50;}
}
case 3: //Wenn Spieler im Shotguns-Menü ist
{
if(listitem==0) {weaponid = 25; ammo=60;}
else if(listitem==1) {weaponid = 26; ammo=40;}
else if(listitem==2) {weaponid = 27; ammo=20;}
}
case 4: //Wenn Spieler im Gewehre-Menü ist
{
if(listitem==0) {weaponid = 30; ammo=60;}
else if(listitem==1) {weaponid = 31; ammo=40;}
}
case 5: //Wenn Spieler im Granaten-Menü ist
{
if(listitem==0) {weaponid = 16; ammo=60;}
else if(listitem==1) {weaponid = 17; ammo=40;}
}
}
GivePlayerWeapon(playerid,weaponid,ammo); //Gebe Spieler ausgewählte Waffe
GetWeaponName(weaponid,weapon,16); //Finde Name für ausgewählte Waffe heraus
if(id==5) format(string,sizeof(string),"* Sie haben eine %s mit %d Stück genommen.",weapon,ammo); //Granaten haben kein Schuss, sondern eine Stück-Zahl ^^
else format(string,sizeof(string),"* Sie haben eine %s mit %d Schuss genommen.",weapon,ammo);
SendClientMessage(playerid,0xFFAA00FF,string); //Zeige Meldung für Spieler in Orange im Chat
SetPVarInt(playerid,"WD_ID",1);
return ShowPlayerDialog(playerid,Waffendialog,DIALOG_STYLE_LIST,"WaffenMenü",WaffendialogText,"Weiter","Zurück");
}
}
}
} -
@ Goldkiller, deine Aussage mim Abbruch stimmt nur teilweise. Zwar bricht er deinen Code in der Funktion ab, aber damit er nicht den Fehler übergreifend macht kannst du mal anhand folgendem Beispiel sehen:
new Array[]={3,2,1};
forward Test();
public Test()
{
new number = -1;
Array[number]=2;
}main()
{
#include <OnPlayerCommandText/test>
Test();
print("Lol");
}Dieser bricht in sich total zusammen und zeigt auch nichtmehr das "Lol" in der Console, jedoch mithilfe von CallLocalFunction:
new Array[]={3,2,1};
forward Test();
public Test()
{
new number = -1;
Array[number]=2;
}main()
{
#include <OnPlayerCommandText/test>
CallLocalFunction("Test","");
print("Lol");
}Wird zwar der Code in der public "Test" abgebrochen, aber in main läuft er ohne probleme weiter und zeigt auch die Meldung "Lol" in der Console an.
@Topic:
Also bei mir funktioniert es mit Pfadangabe und alles, sind die Dateien auch wirklich unter pawno/includes/... ? Also in diesen Unterordner hier:
public OnPlayerCommandText(playerid, cmdtext[])
{
#include <OnPlayerCommandText/TeleportCMD.inc>
#include <OnPlayerCommandText/TestCMD.inc>
#include <OnPlayerCommandText/AdminCMD.inc>
#include <OnPlayerCommandText/FahrzeugCMD.inc>
#include <OnPlayerCommandText/AllgemeinCMD.inc>
return 1;
}bzw. startest du das Pawno wirklich von dort, wo die Includs sind oder benützt du unabsichtlich ein anderes?
Ansonsten probiere den obigen Code, wo überall die Endung *.inc steht.