Skocz do zawartości

pilna pomoc z przykładem


pazio

Rekomendowane odpowiedzi

otóż znalazłem w necie fajny "example" do mario_kart

pobrałem go i pozmieniałem na bolidy porche supercup

 

ale nie potrafiłem ustawić tak żeby bolidy po dojechaniu do mety miały inną punktację niż ta którą posiada gra czyli za pierwsze miejsce 10, za drugie 9 itd.......

 

próbowałem również dodać więcej bolidów żeby nie jeździły tylko 8 a np. 12

ale wyskakiwał jakiś dziwny błąd w obj_camera i obj_hud

pomimo że w kodzie pozmieniałem w tym miejscu gdzie global.player to ustawiłem z 7 na 10(nie licząc gracza)

 

 

o oto brzmi moje pytanie

mógłby ktoś zobaczyć ten przykład i postarać się "przerobić" te dwa wyżej pisane błędy albo wytłumaczył w jaki sposób to zrobić?

 

oto link

 

mario_kart

Odnośnik do komentarza
Udostępnij na innych stronach

już z graczami sam mocno się przyjrzałem i doszedłem do tego jak ustawić ich więcej ale jeszcze mam drugie pytanie odnośnie tych punktów,otóż znalazłem te dwa kody i jestem przekonany że są one od punktacji ale te dwa kody są tak głupie że liczą punkty od 10 w dół czyli 10-9-8-7 ......

potrafisz coś na to poradzić żeby punkty były liczone inaczej np.15 za pierwsze a 12 za drugie 11 za trzecie?

 

pokazuje kod niżej

 

GML
if stats=0 and !instance_exists(obj_player)

{

alarm[0]=90

stats=1

ds_list_clear(global.best_this_round)

ds_list_clear(global.best)

list=ds_list_create()

with driver_parent

{

global.points[player_id]+=(11-place)

ds_list_add(other.list,global.points[player_id])

done=false

}

ds_list_sort(list,false)

for (u=0;u<instance_number(driver_parent);u+=1)

{

with driver_parent

{

if global.points[player_id]=ds_list_find_value(other.list,other.u) and done=false

{

ds_list_add(global.best,player_id)

ds_list_add(global.best_this_round,player_id)

global.place[player_id]=place

done=true

break;

}

}

}

ds_list_destroy(list)

}

if stats=1

{

str="This round"

draw_sprite_ext(spr_l_mask,0,view_wview/2,40,string_width(str)/32,1,0,c_white,0.5)

draw_text(view_wview/2,40,str)

for (u=0;u<instance_number(driver_parent);u+=1)

{

draw_sprite(global.char[global.char[ds_list_find_value(global.best_this_round,u)],_sprite],0,20,25+32*u)

yy=24+32*u-5

draw_sprite_ext(spr_l_mask,0,50,yy,1,1,0,c_white,0.5)

draw_sprite_ext(spr_l_mask,0,100,yy,1,1,0,c_white,0.5)

draw_text(50,yy,global.player_id[ds_list_find_value(global.best_this_round,u)].place)

draw_text(100,yy,(11-global.player_id[ds_list_find_value(global.best_this_round,u)].place))

}

}

if stats=2

{

str="Total"

draw_sprite_ext(spr_l_mask,0,view_wview/2,40,string_width(str)/32,1,0,c_white,0.5)

draw_text(view_wview/2,40,str)

for (u=0;u<instance_number(driver_parent);u+=1)

{

draw_sprite(global.char[global.char[ds_list_find_value(global.best,u)],_sprite],0,20,25+32*u)

yy=24+32*u-5

draw_sprite_ext(spr_l_mask,0,50,yy,1,1,0,c_white,0.5)

draw_sprite_ext(spr_l_mask,0,100,yy,1,1,0,c_white,0.5)

draw_text(50,yy,global.player_id[ds_list_find_value(global.best_this_round,u)].place)

draw_text(100,yy,global.points[ds_list_find_value(global.best_this_round,u)])

}

}

 

GML
if stats=0 and !instance_exists(obj_player)

{

var toplist,reference,charlist,tempcharlist,u,i;

ini_time=0

ini_character=1

toplist=ds_list_create()

reference=ds_list_create()

tempcharlist=ds_list_create()

ini_open("Topscore.ini")

for (u=0;u<7;u+=1)

{

ds_list_add(toplist,sqrt(ini_read_real(string(room)+","+string(global.difficult)+string(ini_time),string(u),0)))

ds_list_add(reference,sqrt(ini_read_real(string(room)+","+string(global.difficult)+string(ini_time),string(u),0)))

ds_list_add(tempcharlist,sqrt(ini_read_real(string(room)+","+string(global.difficult)+string(ini_character),string(u),0)))

}

ds_list_add(toplist,time)

ds_list_add(reference,time)

ds_list_add(tempcharlist,global.char[7])

ds_list_sort(toplist,true)

 

charlist=ds_list_create()

for (u=0;u<8;u+=1)

{

value=ds_list_find_value(toplist,u)

index=ds_list_find_index(reference,value)

ds_list_add(charlist,ds_list_find_value(tempcharlist,index))

}

ini_section_delete(string(room)+","+string(global.difficult)+string(ini_time))

ini_section_delete(string(room)+","+string(global.difficult)+string(ini_character))

var i;

i=0

for (u=0;u<8;u+=1)

{

if ds_list_find_value(toplist,u)>0

{

ini_write_real(string(room)+","+string(global.difficult)+string(ini_time),string(u+i),power(ds_list_find_value(toplist,u),2))

ini_write_real(string(room)+","+string(global.difficult)+string(ini_character),string(u+i),power(ds_list_find_value(charlist,u),2))

}

else {i-=1}

}

ds_list_destroy(toplist)

ds_list_destroy(charlist)

stats=2

}

if stats=1 or stats=2

{

var _time;

draw_set_font(font1)

str="Highscore"

draw_sprite_ext(spr_l_mask,0,view_wview-100,20,string_width(str)/32,1,0,c_white,0.5)

draw_text(view_wview-100,20,"Highscore")

draw_set_font(font2)

str="Track - "+string(global.map[room,_name])

draw_sprite_ext(spr_l_mask,0,view_wview-100,56,string_width(str)/32,1,0,c_white,0.5)

draw_text(view_wview-100,56,str)

str="Character - "+string(global.char[global.char[7],_name])

draw_sprite_ext(spr_l_mask,0,view_wview-100,92,string_width(str)/32,1,0,c_white,0.5)

draw_text(view_wview-100,92,str)

var diff;

if global.difficult=0{diff="Easy"} if global.difficult=1{diff="Medium"} if global.difficult=2{diff="Hard"}

str="Difficulty - "+diff

draw_sprite_ext(spr_l_mask,0,view_wview-100,128,string_width(str)/32,1,0,c_white,0.5)

draw_text(view_wview-100,128,str)

for (u=0;ini_read_real(string(room)+","+string(global.difficult)+string(ini_time),string(u),0)>0;u+=1)

{

 

yy=12+u*32

if u=7

{

if sqrt(ini_read_real(string(room)+","+string(global.difficult)+string(ini_time),string(u),0))=time{yy+=13}

else{exit;}

}

_time=sqrt(ini_read_real(string(room)+","+string(global.difficult)+string(ini_time),string(u),0))

if time=_time{draw_sprite_ext(spr_l_mask,0,100,yy+7,7,1,0,c_white,0.5)}

draw_sprite(global.char[sqrt(ini_read_real(string(room)+","+string(global.difficult)+string(ini_character),string(u),0)),_sprite],0,20,yy+16)

set_time(_time)

draw_time(50,yy-4)

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

nie,bo mi chodzi teraz tylko o to by z tego co pokazałem oraz tego przykładu zrobić tak żeby punktacja była w inny sposób liczona

 

ja nie chce żeby to liczyło mi kolejno 10-9-8 bo jest to nudne ale żeby konkretnie za którąś pozycje

 

wiem że się nie przerabia ale mi nie chodzi żeby od razu gre mario_kart zmienić na Need For Speed ale żebym mógł mieć inną klasyfikacje punktową

 

pliska o pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

W takim razie olej ten przykład, bo bardziej Ci on szkodzi niż pomaga, i zrób to tak jak uważasz że powinno być zrobione. Jeżeli dalej nie umiesz tego zrobić to znaczy że musisz się jeszcze czegoś nauczyć.

Tak wygląda praca programisty. :bye1:

Odnośnik do komentarza
Udostępnij na innych stronach

Wymądrzam się bo z doświadczenia wiem że tak najłatwiej jest kogoś przekonać do zmiany myślenia w takim wypadku. Będziesz coraz bardziej uparty i w końcu zrobisz co chciałeś albo się poddasz. Ale nie martw się, pomogę Ci.

 

Twój algorytm musi składać się z tych elementów: Dwóch list zawierających wyniki z aktualnego wyścigu oraz całego sezonu, liczenia punktów, no i być może wczytywania i zapisywania wyników.

 

Do przechowywania wyników polecam ds_map gdzie kluczem będzie id zawodnika a wartością jakaś wartość. (lol) To nie będzie jeden ds_map, będzie ich kilka. Jeden może przechowywać imiona graczy, drugi ich wyniki w sezonie, trzeci wyniki z aktualnego wyścigu, ale może być ich więcej. Możesz przechowywać w nich wszelakie dane na temat zawodników. Jakimi samochodami jeżdżą, jaki mają kolor albo co sobie zamarzysz.

 

Nie pomogę Ci z liczeniem wyników (chociaż o to prosisz w pierwszym poście) ale wiesz jak to powinno działać. Po prostu wpisuj odpowiednim zawodnikom ich punkty do tabeli z wynikami aktualnego wyścigu, oraz dodawaj te wyniki do wyników z całego sezonu.

 

Jeżeli chodzi o zapisywanie i wczytywanie z dysku to jest to niesamowicie proste przy strukturach w GM. Nie wiem czemu ludzie upierają się na te pliki ini. Nie podam nazwy tej funkcji bo chcę żebyś sam poszukał i przeczytał jak działają wszystkie te funkcje.

Odnośnik do komentarza
Udostępnij na innych stronach

a mają być tak samo dwa kody jak na górze tyle tylko że każdy wynik ma być oddzielny

GML
GMLswitch(global.miejsce)

{

case 1: global.punkty+=25; break;

case 2: global.punkty+=18; break

case 3: global.punkty+=15; break

case 4: global.punkty+=12; break

case 5: global.punkty+=10; break

case default: global.punkty+=0; break;

ds_map (other.list,global.points[player_id])

 

}

....

Odnośnik do komentarza
Udostępnij na innych stronach

Łączenie przykładów i czyjegoś kodu nie ma ani krzty sensu. Sprawdź sobie dokumentację i uzupełnij luki. W twoim wypadku są to switche i pewnie zmienne, a bez tego ani rusz. Możesz też próbować robić to na klockach, a potem stopniowo przekonwertujesz to na kod.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...