-
Posts
235 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
News
Documentation
Posts posted by Gawitkkk
-
-
Pentru asta ai nevoie de "TextDrawSetString". Click!
Si ca sa se updateze km, etc, ai nevoie de un timer. Click!
Invatati-va sa lucrati cu wiki, e simplu, usor si acumulati mai multe cunostiinte.
Astea sunt textdraw-urile..
Trucker1[i] = TextDrawCreate(218.000000, 342.125000, "Drive the truck to the checkpoint."); TextDrawLetterSize(Trucker1[i], 0.348499, 1.582500); TextDrawAlignment(Trucker1[i], 1); TextDrawColor(Trucker1[i], -1); TextDrawSetShadow(Trucker1[i], 0); TextDrawSetOutline(Trucker1[i], 1); TextDrawBackgroundColor(Trucker1[i], 51); TextDrawFont(Trucker1[i], 1); TextDrawSetProportional(Trucker1[i], 1);
Trucker2[i] = TextDrawCreate(231.000000, 367.937500, "Ganton (LS) - %d km"); TextDrawLetterSize(Trucker2[i], 0.449999, 1.600000); TextDrawAlignment(Trucker2[i], 1); TextDrawColor(Trucker2[i], -1); TextDrawSetShadow(Trucker2[i], 0); TextDrawSetOutline(Trucker2[i], 1); TextDrawBackgroundColor(Trucker2[i], 51); TextDrawFont(Trucker2[i], 1); TextDrawSetProportional(Trucker2[i], 1);
Tot nu știu cum să fac să arate numărul de km rămași..
-
Am creat textdraw-urile însă nu știu cum să fac ca să își facă update și să îmi arate locația și km (să se calculeze câți km mai sunt și să îmi arate), mă poate ajuta cineva?
-
Într-adevăr este un textdraw. Tot ce trebuie să faci este să setezi acel CheckPoint la destinatie, după aceea folosești:
GetPlayerDistanceFromPoint(playerid, Float:X, Float:Y, Float:Z);
Asta returnează distanța în metri dintre player și punctul aflat la coordonatele X,Y,Z (în cazul tău, x,y,z unde se află checkpointul)
Voi crea textdraw-urile dupa care voi veni cu edit sau post în caz că nu mă descurc.
Mersi pentru ajutorul acordat.
-
Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Am creat un nou job (Trucker), cum fac ca după ce aleg licitația să îmi arate ceva de genul (ca în imaginea de jos)?
Ero(area / rile) / warning-(ul / urile): Nu există.
Liniile de cod / sursa / script-ul(obligatoriu): -
Imagini / Video (optional): http://i.imgur.com/FZ5WpMW.jpg
Ati incercat sa rezolvati singur?: Da, prima dată credeam că este un GameTextForPlayer, însă deabea dupaia am realizat faptul că este un TextDraw. -
Gata, am reușit.
Am ajuns unde am vrut, după ce atașez trailer-ul de Linerunner îmi răspunde comanda.
Vă mulțumesc frumos pentru ajutorul acordat, nu îmi trecea mie prin cap nici cum că trebuia să descarc un include, și nici nu îmi dădeam seama cum trebuie să rezolv warning-urile alea..
Mersi frumos tututror !
Punct., ți-am acordat un + !
KnowN, ți-am acordat un + !
WopsS, ți-am acordat un + !
-
Warning-urile alea sunt de la .inc
Verifica acel include si aranjeaza scriptul cum trebuie. Adica, sa nu fie un rand mai la dreapta, unul mai la stanga. Fiecare cum trebuie!
Cum sa nu fie:
if(...) { //linie1 //linie2 //linie3 }
Cum sa fie:
if(...) { //linie1 //linie2 //linie3 }
Am făcut asta, uite rezultatul: http://i.imgur.com/K12WbXn.png
Bun, să revenim acum la sistemul despre care este vorba.
Am făcut publicul:
public OnTrailerHooked(playerid, vehicleid, trailerid) { if(CarInfo[cartrucker][cartruckertrailer]) // Verifici daca vehicului este pentru job-ul de trucker. { PlayerInfo[playerid][IsWorkTrucking] = 1; SetPlayerCheckpoint(playerid, 2761.5, -2455.89, 13.6, 10.0); SendClientMessage(playerid, COLOR_WHITE, "Drive to the checkpoint to get paid."); } return 1; }
Am primit următoarele erori:
D:\Scripting\Server\gamemodes\excessrp.pwn(4219) : error 033: array must be indexed (variable "cartrucker") D:\Scripting\Server\gamemodes\excessrp.pwn(4221) : error 033: array must be indexed (variable "IsWorkTrucking") Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 2 Errors.
-
Plin de buguri, l-am băgat în gamemode, l-am configurat... și nu merge.
-
Deabea acum am găsit și eu acest include.
L-am implementat la mine pe server și îți spun cu sinceritate că îți mulțumesc foarte mult pentru el.
10/10, foarte frumos.
-
Bun, am făcut exact cum mi-ați explicat.
Am descărcat fișierul EVF, l-am configurat, toate cele... uitați rezultatul:
-
Ai descarcat ce ti-a dat @WopsS si l-ai pus la includeuri, evident, precizandu-l in gm?
#include <OnTrailerHooked>
Nu, de unde îl descarc?
-
Nu știu cum să fac.. am înțeles în mare parte exemplul, dar tot nu știu ce să îi fac..
-
Salut,
Foloseste-te de callback-ul OnTrailerHooked si acolo ii afisezi lista pe care doresti cu ShowPlayerDialog.
Uite un exemplu
public OnTrailerHooked(playerid, vehicleid, trailerid) { if (VehicleInfo[vehicleid][vType] == VEHICLE_JOB && VehicleInfo[vehicleid][vOwnerID] == JOB_TRUCKER) // Verifici daca vehicului este pentru job-ul de trucker. { PlayerInfo[playerid][pTrucking] = 1; SetPlayerCheckpoint(playerid, 2761.5, -2455.89, 13.6, 10.0); PlayerInfo[playerid][pCurrentCheckpoint] = CHECKPOINT_TRUCKER; SendClientMessageEx(playerid, COLOR_WHITE, "Drive to the checkpoint to get paid."); } return 1; }
Am configurat ceea ce mi-ai spus tu.
Uite ce eroare am primit:
D:\Scripting\Server\gamemodes\excessrp.pwn(4218) : warning 235: public function lacks forward declaration (symbol "OnTrailerHooked") D:\Scripting\Server\gamemodes\excessrp.pwn(4220) : error 033: array must be indexed (variable "cartrucker") D:\Scripting\Server\gamemodes\excessrp.pwn(4222) : error 033: array must be indexed (variable "IsWorkTrucking") Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 2 Errors.
Uite ce am facut:
public OnTrailerHooked(playerid, vehicleid, trailerid) { if(CarInfo[cartrucker][cartruckertrailer]) // Verifici daca vehicului este pentru job-ul de trucker. { PlayerInfo[playerid][IsWorkTrucking] = 1; SetPlayerCheckpoint(playerid, 2761.5, -2455.89, 13.6, 10.0); SendClientMessage(playerid, COLOR_WHITE, "Drive to the checkpoint to get paid."); } return 1; }
-
Daca te grabesti cu problema, poti face sa-ti spawneze si tir si remorca, sa te puna in tir si apoi sa-ti ataseze remorca. Si apoi sa-ti apara dialogul ala
Daca nu te grabsesti, asteapta sa-ti raspunda cineva care stie.. eu nu am idee cum verifici cand ti-ai atasat un trailer.
Voi aștepta, mersi frumos.
-
Deci, să îți explic..
Am făcut tot ceea ce este nevoie, însă uite în video-ul de mai jos..
Video: https://www.youtube.com/watch?v=oyMxUjM1wpQ&feature=youtu.be
Aici ai și comanda: http://pastebin.com/RpWaNjsf
-
Pai.
Scriu /work, urmând să se spawneze un Linerunner (în care sunt spawnat și eu, urmănd să fie încuiat) și un Trailer.
Doresc ca după ce iau Trailer-ul respectiv să îmi arate un dialog de tip list, în care să îmi apară locațiile disponibile în care pot livra marfa.
-
.... Vreau ca după ce preiau trailer-ul (remorca) să apară dialog-ul
-
Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Am creat job-ul Trucker, totul este ok și frumos, însă cum pot face ca după ce iau remorca tirului să îmi apară un tabel și să selectez locația unde doresc să duc remorca? Adică după ce iau remorca, să îmi apară lista și să selectez destinația transportului.
Ero(area / rile) / warning-(ul / urile): -
Liniile de cod / sursa / script-ul(obligatoriu): -
Imagini / Video (optional): -
Ati incercat sa rezolvati singur?: Da, am tot căutat pe wiki însă tot nu reușesc să îmi dau seama cum am de făcut.. -
@wooops, imi dai o sugestie te rog?
-
Atunci foloseste-ti metoda ta, cam aia e rezolvarea . Pune 999999999999 .
Nu e asta rezolvarea ! Știam că există o metodă să nu ia mașina damage.. nu 9999999
-
Incearca sa folosesti aceasta metoda:
new Float:health; new veh = GetPlayerVehicleID(playerid); GetVehicleHealth(veh, health); if(health< 999) SetVehicleHealth(veh, 1000);
Nu funcționează...
-
Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Atunci când scriu o comanda, se spawneaza o mașină si mă pune în ea, urmând să încep lucrul la job-ul respectiv. Însă cum pot face ca atunci când sunt în mașină, nici eu și nici vehiculul să nu mai lom damage? Un fel de invulnerabilitate cât timp conduc vehiculul..
Ero(area / rile) / warning-(ul / urile): -
Liniile de cod / sursa / script-ul(obligatoriu): -
Imagini / Video (optional): -
Ati incercat sa rezolvati singur?: Da, momentan am pus SetVehicleHealth(cargarbage[playerid], 100000000000); pana aflu cum pot pune direct imunitate. -
Uită-te în gamemode ce nume ai, și pune în server.cfg numele gamemode-ului.amx.
Exemplu: lucrare.amx
-
Trebuie să fac pentru amândouă bizuri, nu doar la 1.
-
Problema intalnita (descriere): Când folosesc comanda /ad nu îmi ia cat este setat biz fee-ul. Vreau ca atunci când public un ad să îmi ia fix cât este setat biz fee-ul.
Ero(area / rile) / warning-(ul / urile): -
Liniile de cod / sursa / script-ul(obligatoriu):CMD:ad(playerid,params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid,COLOR_WHITE,"{FFB870}Error: Command are inaccessible on foot."); new string[264],sendername[25],idx; if(PlayerInfo[playerid][pMuted] == 1) { format(string, sizeof(string), "You can not speak, you have been silenced for %d seconds.",PlayerInfo[playerid][pMuteTime]); SendClientMessage(playerid, COLOR_LIGHTRED, string); return 1; } if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You don't have level 3."); if(IsPlayerInRangeOfPoint(playerid,5.0,1111.33,-1796.93,16.5938) || IsPlayerInRangeOfPoint(playerid,5.0,2079.6287,2046.1179,11.0579)) { GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(params); while ((idx < length) && (params[idx] <= ' ')) { idx++; } new offset = idx; new result[264]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = params[idx]; idx++; } result[idx - offset] = EOS; for(new s = 0; s < num_words; s++) { new pos; while((pos = strfind(result,Swears,true)) != -1) for(new i = pos, j = pos + strlen(Swears); i < j; i++) { result = '*'; } } if(!strlen(result)) { SendClientMessage(playerid, COLOR_WHITE, "{B8DBFF}Synthax: /ad <Text>"); return 1; } new addd = -1, playeradd = 0; for(new i = 0; i < sizeof(AdvMSG) && addd == -1; i++) { if(strlen(AdvMSG) < 20) addd = i; if(strcmp(AdvPlayer,sendername,true) == 0 && strlen(AdvPlayer) == strlen(sendername)) playeradd = 1; } if(addd == -1) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}Advertisement list is full."); if(playeradd == 1) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You already placed an advertisement."); new payout = idx * 150; if(GetPlayerCash(playerid) < payout) { format(string, sizeof(string), "{FFB870}* You used %d characters which cost $%s, you don't have enough.", offset, FormatNumber(payout)); SendClientMessage(playerid, COLOR_WHITE, string); return 1; } GivePlayerCash(playerid, - payout); format(AdvMSG[addd], 256, "{00D900}Ad placed by %s (Phone: {FFFFFF}%d{00D900}): %s",sendername,PlayerInfo[playerid][pPnumber],result); format(AdvPlayer[addd], 24,"%s",sendername); format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx); GameTextForPlayer(playerid, string, 5000, 5); SCM(playerid,COLOR_WHITE,"You ad will be showen in 30 seconds."); if(IsPlayerInRangeOfPoint(playerid,5.0,1111.33,-1796.93,16.5938)) { SBizzInfo[1][sbTill] += payout; SBizzInfo[1][sbProducts]--; SBUpdate(1,sbTillx); SBUpdate(1,sbProductsx); } else if(IsPlayerInRangeOfPoint(playerid,5.0,2079.6287,2046.1179,11.0579)) { SBizzInfo[32][sbTill] += payout; SBizzInfo[32][sbProducts]--; SBUpdate(32,sbTillx); SBUpdate(32,sbProductsx); } } else return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}You are not near to an advertising agency."); } return 1; }
Imagini / Video (optional): -
Ati incercat sa rezolvati singur?: Da...
Întrebare legată de TextDraw
in Arhivă probleme
Posted · Edited by Gawitkkk
Chiar nu am înțeles...
Uite ce am încercat să fac:
Scuză-mă, știu că sunt cam greu de cap, însă niciodată nu am mai făcut (sau încercat) ceva de genul, de accea sunt așa greu de cap..