Letter P song for kids (music video) - english alphabet song for children, beginners
-------------------------------------------
PEANUT EZREAL IS SH*T[REUPLOAD] - Peanut Stream Highlights TRANSLATED - Duration: 12:46.
Peanut: Wow ..
Peanut: Wow, Smite ... wooooow
Peanut: WOOOOOW
Peanut: She's going AD ... fine then ..
Peanut: Karma's Summoner Spells are .. *internal facepalm*
*lit lit lit*
Peanut: *remembers* I forgot, I need to try on my contacts ... *sigh*
.... there's so many things to do ...
... but not a lot of time
Peanut: No time!
Peanut: I just wanna win the championship already...
Peanut: Time .. with the time that I saw ... but in the end ..
Peanut: If I had luck, I would have more time as well ..
Peanut: If I had luck then more time (???) ..
... that's right :)
Peanut: Even If I do that, I'll die ..
*SKT whale noises*
Peanut: There is ..
Peanut: Oh hey .. (watch out)
*good try*
Peanut: /:
Peanut: *owl noise* ...
.... *into singing*
Profit: .... wouldn't there be too many?
Peanut: This Thresh, he's way too good!
Profit: Yo, I thought you told me you were gonna destroy Lucian?
Peanut: Thresh ... Profit: I didn't see him get destroyed?
Peanut: Hyung. Smite Karma is a bit difficult to work with ..
Peanut: But ... Profit: *LOLS*
Peanut: ...I won the first fight, but died to their Jungler
Profit: I can't go, not with this .. Peanut: It was too difficult ... too hard
Peanut: Registering for it and then doing it was just ...
... just wasn't my style
*Kappa ..
Priiiide*
Profit: Graves did something weird with his ultimate ..
Peanut: Just imagine what how I would do If the Karma had Exhaust instead of Smite .. I would win it all .. Profit: *screams*
Profit: *whimpers*
Profit: ??????
Peanut: Q! There you go .. So Close! Profit: Ahh .. uah .. ah ..
Profit: Really? Peanut: Mm.
Peanut: I think I would've died anyway .. since the dagger would've resetted
Peanut: Profit hyung, hurry! Come and help me at mid
Profit: I did go and try mid earlier but ...
Profit: ... there's no point in going there again Peanut: Clearing waves at Top isn't going to help us win this game hyung! You know this!
Peanut: Clearing waves at Top isn't going to help us win this game hyung! You know this!
... so hurry up and come :)
Peanut: I'll set everything up for you
Peanut: Oh? Ah, hyung ...
*wanted the kill*
Peanut: Hyung! If Gragas is the one to get fed, we won't be able to win ..
*bless you*
Peanut: ... *didn't mean to press* Okay! W! ......
Peanut: Kat! She's going to try to come and all in me..
Profit: Ok, I'm watching, I'm watching ..
... I see it
Profit: I'm watching Peanut: They need to go for you hyung
Peanut: Hyung, can you get away from me? :)
Profit: What, it looks to me like you're dead anyways
... you're gone LOL
Peanut: HYUNG. /: Profit: Ah hah!
Peanut: If you do that, won't you die too then?
*choking chicken?*
Peanut: *reads chat* You're right! Beauty and The Beast was ...
Peanut: Waah ..seriously ..I was watching it and Emma Watson was so ...
.... she was no joke! (she was hot)
Peanut: Get hit by the ult ... aw so close
Profit: What's not a joke? Peanut: Emma Watson
Peanut: Emma Watson! <3
Profit: Emma Wax!
lul
Profit: Yeah I couldn't take my eyes off of her
Profit: Dip, dip, dip!
Profit: She's coming this way (x3)
Peanut: Hyung, you want me to show you my kiting skills?
Profit: Bbaha! Show me >:)
Profit: :O
... :l
Peanut: Ah hyung! If you use Gragas ult like that,
then there's no windows of opportunity!
Peanut: Let's go in, I got Heal!
Profit: Ah! She dodged it.. Peanut: :P .... Triple Kill ...
Profit: She didn't come up to me ...
... I lunged forward, expecting her to come in front of me
Profit: She's better than I thought ..
Peanut: Karma is using her Smite ..
Peanut: Anyone down to save me?? ...
*nope*
Profit: Lee Sin can't move .. xD
Profit: Lee Sin couldn't do anything LOL
Peanut: *from chat* "I miss you man"..- game!
Peanut: And. I can't finish .. and ..
Peanut: finish for me .. ( ͡° ͜ʖ ͡°)
Peanut: I'll be able to carry once I buy Trinity Force and Muramana
Peanut: I'm omw (x4) Gragas tanking it!
Profit: I thought Kat would come and try me from the right
but she came from the left
Peanut: Wow, He landed that? Really ..
Peanut: Wooow, Thresh is a real pro ..
Peanut: He's way too good, yeah?
This match is gonna be my last
Profit: To go to sleep?
Peanut: Yeah
Peanut: I'm tired from going to the skin care center today
Peanut: Really, Smite? .. Oh it wasn't from Karma
Peanut: I'm going to ...
Profit: Is he here?
Peanut: Probably
Profit: Hey let's group up Peanut: Hey! Here, here
Peanut: Com-.. come on, COME ON BABYYY <3
Profit: Mid, mid ... Thresh is here too
Peanut: Wow, this guy ..
Peanut: >:/
Peanut: What, you couldn't do anything??
Profit: What happened
Peanut: He couldn't execute a simple ward W and Ultimate..
Peanut: Are you doing it?
Peanut: Hyung ... if you wanted to get someone
, you should've used it a second later
Profit: What, my Ultimate? Peanut: Yeah .. like for example, just now, he was ..
Peanut: Ah wait, he would've escaped anyways ..
Profit: Yeah, that wouldn't have worked
Peanut: I'm omw! Hyung!
Profit: Hey hey! Nevermind, pull back!
Peanut: Nah, nah ... wait, what the
Profit: Kata! Kata! Kata!
Peanut: I'll get him.
Profit: Okay now, follow me!
Peanut: Smite! >:)
Smite!
Peanut: Smite ... ah!
Peanut: Hyung, my Trinity Force ..
Profit: W, Flash! Lee Sin!
Profit: ... I don't think it is, he's over there
Profit: Dude, what was that lmao
Peanut: No, hyung! .. I was gonna ..-
Profit: Is it because you're tilted??
Peanut: No xD it's not like that!
Peanut: I was trying to steal it with Auto-Q ..
.. but Thresh was here
Profit: LMAO What are you doing??? Peanut: No, hyung lol
Peanut: I have a lot of deaths!
Peanut: Isn't this too much ?..
Profit: I mean .. just because you're tilted ..
Peanut: No lmao I don't have any reasons to be tilted
Peanut: Ohh.. Mid, Zed Zed Zed!! ..
Peanut: Not surrendering! >:(
Peanut: We can win this ..
Peanut: WE CAN DO IT!!
*Thresh says no*
Peanut and Profit: :OOO
Peanut: Wow, timing good!
Peanut: They ran away >:)
Profit: I'm going after them (x3)
Peanut: Stay right here, I'm gonna go bait them in
Peanut: Gragas!
Gragas!
Peanut: Gragas.
Peanut: Is he gonna do it?
Profit: I'm going
Peanut: Gragas ..
.. Gragas! .. GRAGAS ..
... GRAGAS
GRAGASSS
*Profit making plays*
Profit: Ah-ah! Wait-..
Profit: He's way too strong for you to 1v1 xD
Peanut: No, hyung xDD .. I got auto-ed twice and died
Peanut: Precisely two autos
Profit: You know, I thought I tanked pretty well, but LOL ..
Peanut: *Proudly* Two hits >:)
Profit: I thought we would win haha
Profit: Free Triple! ..
Profit: Ah .. :( Peanut: :((
Peanut: No like, hyung why did you suck so much??
Profit: You're blaming me for this game? >:/
Peanut: Mm. xd
Profit: Top lane was won over Peanut: No, but top la-... *laughs*
Peanut: That's not true ...
Profit: I won Top!
Peanut: Naah what are you talking about~ You went with 3 Doran's Rings!
Profit: No like, have you ever seen a Gragas NOT go with 3 Doran's ??
*gives up*
Peanut: Look at the damage graph ... you came 2nd
Peanut: Look at others ... look at others and then see that the ADC is 3rd.
*Wolf in the back: *rages* WHAT IS OUR TEAM DOING*
Peanut: I did great :)
Profit: Please, stop playing ADC, like what are you building LMAO
Peanut: *tired* You've done a lot hyung.
Profit: Yeah lol you too ..
*Translations by: @woochaaang*
-------------------------------------------
I HATE THIS - Duration: 11:28.
AHHH
least got a rims legs or something
almost 40 chest you haven't given me
fucking fuck you fucking back let me get
some bullshit thank you just give me
something dude just something give me a
sign seriously just a sign dude if this
works bro so basically just open the
chest and you yell and that is they open
a chest and you just yell fine y LD item
i want i am basically gonna get the item
packs and if singing works if singing
actually works um uh you know um let me
get the direct sound please or what
again the director nope nothing doesn't
work ok hurry up girl ok sing sing
already please get an item i SAT man who
did the email hopefully we get something
let's go open up the chest you don't
want to do a bit of butter now put some
luck nope ok and I don't have a dueling
ring as well god damn it
now you stupid battles but others chest
I want you to listen up and I want you
to listen up carefully if I open this
chest up and I don't get at least four
unique items I'm going to be very very
upset in fact I'm going to be so upset
that the anger you
you
hi
hello ladies and gentlemen hopefully all
of you today are having a lovely day and
before we get into that in case any of
you out there are interested in winning
some pre items you know I host a ton of
giveaways on a daily basis to whatever I
do is comment something down below and
to give this video a thumbs up thank you
very much so the first thing I proceeded
to do was do a little bit of crafting
because as you guys know I have to onyx
gems in the bank in which i got from
wyverns and i need 85 crafting to make
it into a fury if i use the boost now
there's a really popular method or
pretty much a little bit of a popular
method in which revolves just hopping
worlds and using the charter to use the
lunar blue you know the de lunes
superglass make and that gives up to
like 70k an hour my only issue with this
is that this place is literally packed
in a daytime I feel like it's almost
impossible to do so I ended up just
giving up at around 78 construction and
that is when I was like you know what I
actually believe i'm going to start the
Barrows grind right now now the first
step into doing very super efficiently
in my opinion you have to get barrows
teleport tabs now if you are regular
player you can buy them before I men I
mean some I meant literally bank using
these different methods and I just
believe a waste so much time by some of
the roots you guys take it's almost like
half of a trip if you just simply
teleport the Barrows I also use the
dueling dueling ring so when i'm done
with the chest i just simply teleport
the clown was i restore all of my stuff
with the portal and i just helpful with
the tab and my trip is ready to go so i
had to go and make barrows tab which is
actually a pretty tedious task because
the first thing i have to do is get a
hundred percent favor in the arceus
house now this was kind of weird on many
different levels because I mean getting
the osseous favor wasn't so bad it's
just a crazy book lady got kind of
frustrating sometimes and I call it a
crazy book lady because I've never seen
a ver inscape MPC that is so dang
fast hello yes I believe your name is al
biblia yeah I was actually only i
believe it was in Northwest middle floor
and house actually looking for a
specific book like it was pink yeah
hello hello excuse me yeah I was looking
for a book hello yeah biblia anyway with
that being said I finally got a hundred
percent Arceus favor remember guys I
pretty sure let me know this but as soon
as you get a hundred percent favor be
sure to do the mini quest and lock it in
because as you guys know if you do
different zia house favors it the
opposite house goes down but if you get
a hundred percent in the certain house
and you lock it they will never go down
no matter what so also be sure to talk
to this guy floud you give him a TK and
he actually unlocks be ferrying outside
of the arceus house now while I was so
useful for me is because I used it to
mind the dark essence blocks because
that's what you need to make the Barrows
tabs now i gotta say making the Barrows
tabs was pretty much a breeze because i
didn't realize until later on that the
bank is literally the next to the
lectern i was like literally using a
dueling ring to teleport then whatever
use the free ring and then i found out
there's a bank and I'm like oh cool so
but up inside the 500 barrows tabs are
done but we are not done haha you want
to know why because now I have to
liquidate these 1.2 k Renard's into
prayer potions remember i'm not an iron
man i can't just hmm go to the GE by
Snapdragon seeds make the potions or you
know parts or whatever i'm done no i got
actually collect the snapdragons however
i collected 1.2 k snapdragons in under
an hour you want to know how because on
a luna spell book there's a spell in
which you can tell opposed to word a
booth island i teleported a if you
notice I'm taking a certain route I
walked up down I hopped worlds and I
walked down up then I hop back to the
original world down up how bad did I
would up down like you can keep hopping
worlds
better to just hop between two worlds
because it does spawn pretty fast but if
you really want to do it efficiently
just go up pick up the snapdragons you
know up-tempo to like road 305 from duo
for go back down and then teleport back
Oh hop back to work 304 and that was a
breeze and then I proceeded to make the
prey of potions which didn't also take a
while I mean I still have like almost
500 for Nazis that's gonna equate to
almost like five paid a potion that will
be done and later on but for now if I
want to do 500 virus teleports I want to
make 600 proportions now barrows barrows
was pretty much a breeze it wasn't until
later on the second day of streaming it
I realized so it helped me again like my
stream always helps me guys you're gonna
hear this you know repetitive statement
every single upgrade video I do update
videos always my stream helping me but
someone's like hey open eyes I mean the
guy noticed that I got actually a few
barrows items the night guy was like yo
guys you do realize that you can do a
whole trip without drinking a clip of
prey potions and how that works is I you
use your prey on directs you use the
prey on careers use the leftover prey on
the rims and basically you tanked the
other three brothers and I was doing
that and like maybe 10 or dirty trips I
wasn't even drinking a sip of promotions
I would only sip one if I got maybe the
grill tunnel or dark tunnel because both
of those guys if you don't pray they are
gonna wreck you and yeah you guys know I
got bullshit mood after bullshit loop at
the bullshit loot after bullshit loop
after bullshit loop after bullshit leave
after bullshit but before we talk about
Bob bullshit loop shout out to to these
two beautiful guys who actually
supported me with a bunch of money
George gave me almost three hundred
dollars and I'm like what the hell and
seconds later sisley son else who's
watching my stream gave me three hundred
dollars that whole night I believe it
was I think I was like two days ago I
almost gathered eight hundred dollars in
donations it was almost nine hundred
dollars in donations and why I find out
Amazings I know you know to extremist
most of them make that in one day I'm
screaming on YouTube gaming
no I don't get as many viewers is people
do on twitch and people still support
the hell out of me much much love anyway
yeah I got more bullshit loop mo cuishle
and mobile she loo loo loo loo loo loo
loo loo loo loo and more bullshit lose a
few boo shit Lou later
cool
I
alright so let's quickly talk about the
giveaway so everybody can go home so
when their number one is going to be
picked via a common bought it basically
just goes to my last video and pics
around upcoming so good luck winner
number one is cursing me says you can
call me sensei I Chris I can also call
you to give away with it because you
just wanted some stuff cool when a
number two is a comment actually picked
by me myself and it's coming from a guy
who says oak guys congratulations on 50k
subscribers something something about
the Illuminati anyway but I've been said
remember if you guys are interested in
entering be sure to give this video a
thumbs up and to come and something down
below so you can be picked next with a
video what happened said bye peace out
you
-------------------------------------------
Free Redeem GiftCard 2017 - Working Has 15 million users - Duration: 3:20.
so you want to know how to get free gift
cards fast or how to get cheap gift
cards fast huh today I'll tell you how I
save money and how I learned how to get
gift cards for free with one of my new
favorite websites watch now to learn how
to get free gift cards or how to get
cheap gift cards so you've been looking
for ways for how to get free gift card
codes or how to get free gift cards no
surveys needed and you still had no luck
finding them well you can definitely get
free gift cards or chief gift cards but
those free gift card codes that you get
with some free gift cards hack are
usually not legit with raise however you
can buy sell and earn gift cards for
free fast for those of you who don't
want a free gift cards app and just want
free gift cards online including
learning how to get free Amazon gift
cards and or how to get free itunes gift
cards with no surveys needed or a free
gift card code no surveys needed raise
has a way for you to do that you can
save a lot of money by buying discounts
gift cards or you can refer friends and
save up raise credits to get your own
raise gift cards for free don't forget
to use the Rays promo code or raise
referral code listed below for that free
five dollars credit mentioned in this
video to get you started watch now to
learn how to get gift cards for free
fast or how to get discount gift cards
fast
you
you
-------------------------------------------
Koopappartement: Boekelose Stoomblekerij 66, ENSCHEDE - Duration: 0:58.
For more infomation >> Koopappartement: Boekelose Stoomblekerij 66, ENSCHEDE - Duration: 0:58. -------------------------------------------
GMnet: Server is king (Tutorial 006) - Duration: 1:22:57.
Before we begin you need to download GMnet template 003 or above (See description).
In this tutorial we will create a server is king architecture
This means that the server hold all the cards and the clients only send minor info to the server.
The server then process the data and only send back draw info.
First we remove stuff we dont need anymore.
htme_rom_demo
remove htme_obj_player
obj_create_network_objects>Create event
//instance_create(0,0,htme_obj_playerlist);
We first need a player object that is created on the server and controlled by the client.
duplicate htme_obj_player to obj_player
Remove persistent
Delete Create event
Delete Begin step event
Delete End step event
Delete draw event
Delete 1 key event
Delete 2 key event
Add a create event and a code block
/// Init pressed_jump = false; pressed_left = false; pressed_right = false;
Ok. This will be our basic player character. We will create a player for each player that join the server.
obj_client_handler
Every player have this synced object and a REMOTE on each other.
So when obj_client_handler is created on the server we can create a obj_player at the same time.
Create event add a code block.
// Create player CreatePlayer=true; // ID of the created player PlayerID=noone;
Step begin event add code block
/// Create player
if htme_isServer() { }
if CreatePlayer { {
// Create player PlayerID=instance_create(90,500,obj_player); // Only create one player CreatePlayer=false;
We also need to destroy the obj_player when the obj_client_handler is destroyed
Add a destroy event and a code block
/// Destroy if PlayerID>-1 with PlayerID instance_destroy();
When a player disconnect the obj_client_handler is destroyed and obj_player with it.
We also need to set PlayerID to noone if the obj_player is destroyed by an enemy.
obj_player
Add a destroy event and a code block
/// Reset player with obj_client_handler { if PlayerID=other.id PlayerID=noone; }
We loop all obj_client_handler and check if PlayerID is the same as the destoyed.
If it's the same the player id who was destroyed it belonged to that clients. So we reset it.
Ok. The client will send info to steer his player. We do this by RPC. For that we need a script.
Create a new group in scripts named Network
First we need to create some help scripts
Create a new script named htme_get_instance_hash
/// htme_get_instance_hash() return htme_mp_player;
htme_mp_player is the player hash of a synced instance. All synced instances got this variable to define the owner of it.
Create a new script named htme_get_last_rpc_hash
/// htme_get_last_rpc_hash(); return obj_htme_rpc.Last_From;
Last_From is a variable from the RPC object that hold the last received player hash.
Ok. Now for the steer script.
Create a new script named scr_Network_Steer_player
/// scr_Network_Steer_player(data string);
var data_string=argument0;
// Find right obj_client_handler with obj_client_handler { }
// Check if this instance belong to the RPC sender if htme_get_instance_hash()=htme_get_last_rpc_hash() { }
// Give player id the info if PlayerID>-1 { }
with PlayerID { }
pressed_jump = real(string_char_at(data_string,1)); pressed_left = real(string_char_at(data_string,2)); pressed_right = real(string_char_at(data_string,3));
Ok. This script will take a string with data and each number in the string represent a command state.
This dont make sense yet. But we now come to the key logger.
The keylogger log keys we press and send them to the server and to our player there.
Create a object group named Network
Create a new object obj_player_keylogger
Add Create event and a code block
/// init
// Init logger pressed_jump[0] = false; pressed_left[0] = false; pressed_right[0] = false;
// Last value logger pressed_jump[1] = false; pressed_left[1] = false; pressed_right[1] = false;
Add a step event and a code block
/// Logger
Logger_new[0] = keyboard_check(vk_space); Logger_new[1] = keyboard_check(vk_left); Logger_new[2] = keyboard_check(vk_right);
// Check if different from last send and generate send string var FoundChange=false var SendString="";
for (var i=0; i<array_length_1d(Logger_new); i+=1) { }
// Check for change if Logger_new[i]!=Logger_last[i] { }
FoundChange=true;
// Add to send string SendString+=string(Logger_new[i]); // Save last Logger_last[i]=Logger_new[i];
// Send if FoundChange { }
htmerpc_send(htme_hash(),scr_Network_Steer_player,obj_server_handler.htme_mp_player,SendString);
First we get the new key states and save them.
We compare them to the last sended values and generate a send string.
The string is simply a 1 or 0 depending on the key state and we just put them in a string.
If there is a change in the keys we send the string to the server that give our player new info.
We dont need a return value from the RPC so we dont use a RPC handler. We simply use the RPC send script.
We need to create the key logger in the room.
obj_create_network_objects
This object will create and destroy the instance when needed.
Create event
instance_create(0,0,obj_player_keylogger);
Destroy event
with obj_player_keylogger instance_destroy();
We are now ready for a first test.
Create a server.
A obj_client_handler is created that also create a obj_player and we "link" the client_handler and the obj_player by saving the obj_player id in obj_client_handler.
The obj_player_keylogger was also created and when we press a key it detect the change and send it to the server.
Press the arrow keys.
The server get the info and search for the obj_client_handler that give us the obj_player id.
The server now set the info to the obj_player and we start to move the player.
When we dont press any keys the change is detected and send a new info string to the server.
As you know P1 is the server so when we send the RPC the engine will detect that and not actually send anything.
It will just simulate it and run the script.
Now connect P2
When P2 is connected a obj_client_handler is created on P2 and then synced to P1 as a REMOTE.
When the obj_client_handler REMOTE object was created on the server it created a obj_player.
P2 also created a obj_player_keylogger to check changes and send a info string to the server.
Use the arrows to move the player.
You see that we can move our player on the server but we dont see anything on P2.
Thats because the obj_player is only created on the server.
Now we will make the server send draw info to the clients. And make the client draw the info.
First we must collect all players positions, sprite_index and image_index.
Bundle everything together and send it.
The client can then use that info and draw it on his screen.
We can use obj_server_handler to collect and draw the info for the clients.
But first we need to collect and bundle the draw info
obj_server_handler
Create event
// Define collector variables Collector_que=noone saved_arrays=noone;
We will use this later in the destroy event. So we must init it first.
Add a new code block in the create event
/// Collector if htme_isLocal() { }
// Collect queue Collector_que=ds_queue_create();
// Objects to collect Collector_objects_array[0]=obj_player;
// Sync variable data_chunk=""; data_chunk_last="";
// Steps to collect before send Collector_collect_steps=1; Collector_collect_counter=0;
// Buffers to use
Collector_buffer_array[0]=buffer_s16; // x (-32,768 to 32,767)
Collector_buffer_array[1]=buffer_s16; // y (-32,768 to 32,767)
Collector_buffer_array[2]=buffer_u16; // sprite_index (0-65,535)
Collector_buffer_array[3]=buffer_u8; // image_index (0-255)
We will collect all data in a queue. We put the objects we want to collect data from in an array.
Last we set a counter for one step before we will send the info. We will experiment with this later :-)
We create an array for the buffer types depending on what value we will collect.
We also need to clean if destroyed
Add a destroy event add a code block
/// Clean if htme_isServer() { }
if Collector_que>-1 { }
ds_queue_destroy(Collector_que);
Step begin event
Add a new code block
/// Collector if htme_isServer() { }
// Loop object to count them var collect_id_list=ds_list_create();
for (var i=0; i<array_length_1d(Collector_objects_array); i+=1) { }
with Collector_objects_array[i] ds_list_add(collect_id_list,id);
// Loop objects to sort them depending on ther depth // Create grid to hold id and depth so we can sort it later
var instance_grid=ds_grid_create(2,ds_list_size(collect_id_list));
// Define temp var var temp_instance;
for (var i=0; i<ds_list_size(collect_id_list); i+=1) { }
temp_instance=collect_id_list[| i]; instance_grid[# 0,i]=temp_instance; instance_grid[# 1,i]=temp_instance.depth;
// Sort the grid after depth ds_grid_sort(instance_grid,1,false);
// Loop instances and collect current info for (var i=0; i<ds_list_size(collect_id_list); i+=1) { }
// Get instance from grid temp_instance=instance_grid[# 0,i];
// Get info from instance with temp_instance { }
// Collect info chunk ds_queue_enqueue(other.Collector_que,x,y,sprite_index,image_index);
// Clean ds_list_destroy(collect_id_list); ds_grid_destroy(instance_grid);
// Count up collected steps Collector_collect_counter+=1;
// Create send string when countdown is done if Collector_collect_steps<=Collector_collect_counter { }
// Reset countdown Collector_collect_counter=0;
// Check if we collected something if ds_queue_empty(Collector_que)=false { }
// Create buffer var myBuffer=buffer_create(2048,buffer_grow,1); // Temp variable var theValue=0;
// Count the buffer array so we know how big each collection chunk is var infoChunk=array_length_1d(Collector_buffer_array);
// Loop collected info and turn it to a buffer while (!ds_queue_empty(Collector_que)) { }
// Loop buffers we use and get chunk values for (var j=0; j<infoChunk; j+=1) { }
// Get the value from the queue theValue=ds_queue_dequeue(Collector_que);
// Put the value in the buffer with the buffer type we set in the create event
buffer_write(myBuffer,Collector_buffer_array[j],theValue);
// Convert the buffer to a string data_chunk=scr_Buffer_To_String(myBuffer,true); EDIT: also add: // Clean buffer_delete(myBuffer);
// Check if different from last send if data_chunk!=data_chunk_last { }
// Send to all players htmerpc_send(htme_hash(),scr_Network_Draw_Info,"",data_chunk);
// Save as last data_chunk_last=data_chunk;
else { }
// Send empty to all players htmerpc_send(htme_hash(),scr_Network_Draw_Info,"","");
else { }
// Add new step chunk // This will work as a stop when the client process the data
ds_queue_enqueue(Collector_que,-1000,-1000,0,0);
Ok. What do we do here?
// Loop object to count them
We need to sort the instances after depth so we can collect the info in the depth order. Else depth wont work.
// Loop objects to sort them depending on the depth
We create a grid and save id and depth then we sort after the depth
// Loop instances and collect current info
Loop all instances in the depth order and collect info
// Count up collected steps
Count up the step counter by 1
// Create send string when countdown is done
If the step counter is done we create and send the string
// Add new step chunk
If the step counter is not done we save a special "new step" set. When the client read this he knows we sent more than one step.
// Check if we collected something
We check if we collected something, who knows all players may be gone.
// Send empty to all players
If all players is gone we just send an empty string to the clients so they stop draw.
// Create buffer
We create a buffer that will hold our collected info.
// Loop collected info and turn it to a buffer
We loop the collected info and step each chunk that is now 4 pieces (x,y,sprite_index,image_index)
// Loop buffers we use and get chunk values
We loop the buffer array and add each value collected and get the buffer type from the buffer array
// Convert the buffer to a string
Convert the buffer to a string so we can send it via RPC to the clients
// Check if different from last send
If the send is different from the last time we send it else we dont need to send it.
Ok. Now we collect and send the data to the clients. But the client need to process the received info.
We need to setup some variables in the obj_server_handler when the REMOTE is created on the clients.
obj_server_handler>Create event
else { }
// draw_array[x]. Each index hold another array with one draw chunk. This is what we draw to the screen
Draw_array=noone;
// Saves all incomming data chunks, each queue got a draw_array[x] that contain chunk arrays.
saved_arrays=ds_queue_create();
We also need to clean this if it get destroyed
Destroy event
else { }
if saved_arrays>-1 { }
// Destroy saved arrays ds_queue_destroy(saved_arrays);
Ok. The server will make the client run scr_Network_Draw_Info and provide a string with info.
Create a new script scr_Network_Draw_Info in the Network group
/// scr_Network_Draw_Info(data_string);
// If server then exit if htme_isServer() exit;
// Get data chunk var data_string=argument0;
// Check if empty if data_string!="" { }
// Convert to buffer var MyBuffer=scr_String_To_Buffer(data_string);
// Continue in the obj_server_handler with obj_server_handler { }
// buffer value array define var theValue_array=noone; // define draw array var new_draw_array=noone;
// Count the buffer array so we know how big each collection chunk is var infoChunk=array_length_1d(Collector_buffer_array);
// Loop buffer while (buffer_tell(MyBuffer)<buffer_get_size(MyBuffer)) { }
// Loop buffers we use and get chunk values for (var j=0; j<array_length_1d(Collector_buffer_array); j+=1) { }
// Get value from buffer theValue_array[j]=buffer_read(MyBuffer,Collector_buffer_array[j]);
// Check if new step chunk if theValue_array[0]=-1000 and theValue_array[1]=-1000 and theValue_array[2]=0 and theValue_array[3]=0 { }
// Found new step chunk // Put the draw array into the saved arrays ds_queue_enqueue(saved_arrays,new_draw_array);
// Reset new draw array, so its ready for next step info new_draw_array=noone;
else { }
// Draw info, save in new draw array if is_array(new_draw_array) { }
// Add value array to new draw array new_draw_array[array_length_1d(new_draw_array)]=theValue_array;
else { }
// Set first value array in draw array new_draw_array[0]=theValue_array;
// Unlink the array from the new draw array theValue_array=noone;
// Put new draw array into the saved arrays ds_queue_enqueue(saved_arrays,new_draw_array);
// Clean buffer_delete(MyBuffer);
else { }
// Continue in the obj_server_handler with obj_server_handler { }
// Add noone in saved ds_queue_enqueue(saved_arrays,noone);
Ok. What do we do here?
// Check if empty
We check if we got an empty draw then we set to draw a empty step.
// Convert to buffer
We convert the string back to a buffer to get info from.
// Loop buffer
We loop the buffer and step one chunk (4 pieces in each chunk right now)
// Loop buffers we use and get chunk values
Read the buffer and get the buffer type from our buffer array. We add the value to an array.
// Check if new step chunk
If it has the special "new step" values we save the new draw array we generated until now and start with a empty new draw array for the next step in the buffer.
// Draw info, save in new draw array
Save the value array to the new draw array
// Put new draw array into the saved arrays
Save the last draw array
Ok. Now we processed the received draw info and saved all the new draw arrays in a queue.
We now need to get the first draw array from the queue and draw it on the screen.
obj_server_handler
Create a draw event and add a code block
/// Draw
// Only draw if not on the server if !htme_isServer() { }
// Get new draw array from the save queue, if any if ds_queue_empty(saved_arrays)=false { }
// Get next step to draw Draw_array=ds_queue_dequeue(saved_arrays);
// Get later step if we got too many while (ds_queue_size(saved_arrays))>Collector_collect_steps*2 { }
// Get next step to draw Draw_array=ds_queue_dequeue(saved_arrays);
// Check if draw array got info if is_array(Draw_array) { }
// define draw chunk var chunk_array;
// Loop array and draw each chunk for (var i=0; i<array_length_1d(Draw_array); i+=1) { }
// Get a chunk chunk_array=Draw_array[i];
// Draw chunk draw_sprite(chunk_array[2],chunk_array[3],chunk_array[0],chunk_array[1]);
Ok. What do we do here?
// Get new draw array from the save queue, if any
If there is a draw array saved in the queue we get it, else draw the last one
// Check if draw array got info
It may be noone if there is nothing to draw so we check for that
// Loop array and draw each chunk
Loop the draw array and grab a chunk and draw it
Ok. Now we can test it.
Now the client can see the players too.
Now for the pros and cons.
The cons is that you may notice that when P2 move. It takes about 20-40 milliseconds before the player actually move. This is fine in LAN but in Online you will notice it even more.
You can only have one room. So if you want shops or other floors in your game you need to add them in other sections in the same room.
The pros is that all objects will always be in perfect sync. You don't need to resolve paradoxes.
We want to keep these pros because they are simply too good. But we want to make the game work online too.
So how do we do that?
Well it depends on what game you are creating.
In the next tutorials we will add our server architecture to some games.
But before we do that we need to set GMnet to use delta time.
With delta time enabled you dont need to worry if the game lag and clients sudenly disconnects.
Scripts>Gmnet>htme>htme_config
use_delta_time=true;
Ok. Thats it.
We want to add our server to the extension so we can import it to the games we will make go multiplayer.
Extensions>GMnet>Export resources
First remove everything
Then click add all.
We dont want to import the htme demo so remove:
Sprites>htme_demo
Fonts
objects>htme_demo>game We keep the menu object.
Rooms>htme_rom_demo
Rooms>htme_rom_demo2
We keep the Lobby and the menu rooms.
Save
Ok. Now we export the extension as GMnetServerIsKing
We also export WinDev so we can use the dual windows.
Ok. We now have two extensions ready to be imported to a game.
In the next tutorial we will import it to one of the demo games in Game maker.
-------------------------------------------
WORD OF THE DAY Episode 16 | Is it a cold? - Duration: 0:34.
Good morning, fellow logophile!
This is Ellybot the Science Nut.
Welcome to Day 16 of the Word of the Day series.
Today's word is syndrome It's a noun
The definition of syndrome is that it's a combination or pattern of signs and symptoms
that consistently occur together which would indicate a social or medical condition.
Thank you for stop by and I hope you have a great day!
Until next time, Bye!
-------------------------------------------
Is Antarctica a Dark & Misterious land Of Ice? be the judge - Duration: 7:09.
Is Antarctica a Dark & Misterious land Of Ice? be the judge
Antarctica is a land of ice
and also a land of mystery
and bark secret
it have been explore from ages
but still not understood
but
see the few things been discovered
-------------------------------------------
Take the "old" out of gold - Modern mining by Goldcorp - Duration: 3:09.
ATLAS COPCO PRESENTS
TAKE THE "OLD" OUT OF GOLD MODERN MINING BY GOLDCORP
Here you are right now, in the middle of the James Bay territory
we refer it to be Eeyou Istchee which is the Cree land.
So we are guest here, far from every infrastructure.
We have to build our own infrastructure, our road, powerline, airport.
It is like a mini town on its own.
We are on our own, so we can only depend on our self.
WHO ARE GOLDCORP?
We are a Canadian mining company based in Vancouver.
We are mainly interested by gold so this is a pure gold mine
in the new jurisdiction in Northern Québec.
WHAT IS YOUR RELATION TO ATLAS COPCO?
Since I started in the mines more than 25 years ago
we were already working with Atlas Copco.
We had a great success and we were seen as the leaders
in terms of use of technologies.
Of best in class equipment
that allows us to operate safely with the lowest cost of the industry.
We have been very impressed.
These guys were clearly
almost a quarter of a century ahead of everybody else.
They were developing technology ideas that we were not even thinking about.
Today we are using these tools and technologies for the safety of our people,
that clearly enhance the way we operate.
And they continue to develop and push technologies to the point we are now.
We are using the equipment from surface
so that we can continue operation when we cannot be under ground.
And continue all the processes to obtain our gold
to have a low cost mining operation.
HOW HAS THE SIMBA TELE-REMOTE HELPED YOUR OPERATIONS?
The Simba is the perfect tool for us.
First of all we have a very complex ore body, so the Simba is very flexible.
Ore deposit here at Éleonore is very complex.
Sometimes some areas of the deposit is quite straight, another is like a snake.
So it is important that we have a drill that can adapt to all these shapes.
It was important that we have an equipment that can adapt to this
to allow us to have the best performance possible in this kind of environment
to reduce dilution.
So that we can increase our margins at the end of the day.
The Simba is flexible, robust, efficient, high productivity.
And if you ask the operators what they think they wouldn't change it.
No way.
Không có nhận xét nào:
Đăng nhận xét